prometheus
Prometheus 的整体架构以及生态系统组件如下图所示:
prometheus 各组件介绍
- Prometheus Server: 使用pull方式采集监控数据,在该组件上配置监控数据的采集和告警规则。
- Client Library: 客户端库,为需要监控的服务生成相应的 metrics 并暴露给prometheus server。当 prometheus server 来 pull 时,直接返回实时状态的 metrics。
- Push Gateway: 主要用于短期的 jobs。由于这类 jobs 存在时间较短,可能在prometheus来pull之前就消失了。为此,这次 jobs 可以直接向 Prometheus server 端推送它们的 metrics。这种方式主要用于服务层面的 metrics,对于机器层面的 metrices,需要使用 node exporter。
- Exporters: 用于暴露已有的第三方服务的 metrics 给 Prometheus。
- Alertmanager: 用于接收promethues发出的告警做进一步处理,对告警进行聚合、下发、抑制等。常见的告警方式有:邮件,钉钉,webhook 等一些其他的工具。
数据描述
时间序列中的每一个点称为一个样本(sample)。Prometheus 的时序指标数据由 timestamp、metric name、label、value 组成:
-
timestamp 是毫秒级的时间戳.
-
metric name 是符合正则[a-zA-Z_:][a-zA-Z0-9_:]*的字符串, 即只包含英文字母和数字及两个特殊符号_:, 不能包含横杆-这样的特殊符号.
-
label 是一个 kv 都是 string 类型的 map.
-
value 是 float64.
指标类别
Prometheus中主要使用的四类指标类型,如下所示
- Counter (累加指标)
- Gauge (测量指标)
- Summary (概略图)
- Histogram (直方图)
Counter 一个累加指标数据,这个值随着时间只会逐渐的增加,比如程序完成的总任务数量,运行错误发生的总次数。常见的还有交换机中snmp采集的数据流量也属于该类型,代表了持续增加的数据包或者传输字节累加值。表示的是一个持续变化趋势值,用来记录当前的数量。一般用于记录当前请求数量,错误数
Gauge代表了采集的一个单一数据,表示当前数据的一个瞬时值,这个数据可以增加也可以减少,一般用来记录内存使用量,磁盘使用量,文件打开数量等
Histogram主要用于在一定范围内对数