时间序列

Prometheus学习系列(一)之Prometheus简介

跟風遠走 提交于 2019-11-26 11:16:18
前言 本文来自 Prometheus官网手册 和 Prometheus简介 什么是prometheus? Prometheus 是一个最初在SoundCloud上构建的开源系统监视和警报工具包。自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发者和用户社区。 它现在是一个独立的开源项目,可以独立于任何公司进行维护。 为了强调这一点,并阐明项目的治理结构,Prometheus于2016年加入Cloud Native Computing Foundation,作为继Kubernetes之后的第二个托管项目。 特征 Prometheus的主要特征有: 多维度数据模型,由指标键值对标识的时间序列数据组成 PromQL,一种灵活的查询语言 不依赖分布式存储; 单个服务器节点是自治的 以HTTP方式,通过pull模型拉取时间序列数据 支持通过中间网关(pushgateway)推送时间序列数据 通过服务发现或者静态配置,来发现目标服务对象 支持多种多样的图表和界面展示 组件 Prometheus生态包括了很多组件,它们中的一些是可选的: Prometheus主服务器,用于抓取和存储时间序列数据 用于检测应用程序代码的客户端库 用于支持短声明周期的push网关 针对HAProxy,StatsD,Graphite等服务的特定exporters 警告管理器

理解时间序列

二次信任 提交于 2019-11-26 10:17:51
理解时间序列 在1.2节当中,通过Node Exporter暴露的HTTP服务,Prometheus可以采集到当前主机所有监控指标的样本数据。例如: # HELP node_cpu Seconds the cpus spent in each mode. # TYPE node_cpu counter node_cpu{cpu="cpu0",mode="idle"} 362812.7890625 # HELP node_load1 1m load average. # TYPE node_load1 gauge node_load1 3.0703125 其中非#开头的每一行表示当前Node Exporter采集到的一个监控样本:node_cpu和node_load1表明了当前指标的名称、大括号中的标签则反映了当前样本的一些特征和维度、浮点数则是该监控样本的具体值。 样本 Prometheus会将所有采集到的样本数据以时间序列(time-series)的方式保存在内存数据库中,并且定时保存到硬盘上。time-series是按照时间戳和值的序列顺序存放的,我们称之为向量(vector). 每条time-series通过指标名称(metrics name)和一组标签集(labelset)命名。如下所示,可以将time-series理解为一个以时间为Y轴的数字矩阵: ^ │ . . . .