跳转至

第二节 深入Prometheus设计-指标定义与分类(PromQL)

1.指标

  • 每种监控系统都有自己的指标定义和规范
  • 指标的数据格式将直接影响对数据的采集和存储
  • 定义指标时需要充分考虑通用性和扩展性

1.1 指标定义

<metric name>{<label name>=<label value>, ...},

1.1.1指标名称(metric name)

  • 用于说明指标的含义
  • 指标名称必须有字母、数字、下划线或者冒号组成
  • 符合正则表达式 [a-zA-Z:][a-zA-Z0-9:]
  • 冒号不能用于exporter

1.1.2 标签(label)

  • 体现指标的维度特性,用于过滤和聚合
  • 通过标签名和标签值组成,键值对形式形成多种维度

1.1.3 举例

指标1 http_request_total{status="200",method="POST"}
指标2 {__name__ = "http_request_total",status="200",method="POST"}
  • 以上两个指标是一样,下划线开头的标签是系统内部使用的
  • 指标名称:http_request_total 代表HTTP请求的总数
  • 标签1: status200代表状态码为200
  • 标签2: methodPOST代表请求类型为POST

2 指标分类

Prometheus指标分为CounterGaugeHistogramSummary

2.1 Counter 计数器

  • 计数器类型,只增不减
  • 适用于机器启动时间、HTTP访问量
  • 具有很好的不相关性,不会因为机器重启而置0
  • 通常会结合rate()方法获取该指标在某个时间段的变化率

2.2 Gauge

  • 仪表盘,表征指标的实时变化情况
  • 可增可减,CPU和内存使用量。
  • 大部分监控数据类型都是Gauge类型的

2.3 Summary

  • 高级指标,用于凸显数据的分布情况
  • 某个时间段内请求的响应时间
  • 可以与Histogram相互转化
  • 采样点分位图统计,用于得到数据的分布情况
  • 无需消耗服务端资源
  • histogram相比消耗系统资源更多
  • 计算的指标不能再获取平均数等其他指标
  • 一般只适用于独立的监控指标,如垃圾回收时间等

2.4 Histogram

  • 反映了某个区间内的样本个数,通过{le="上边界"}指定这个范围内的样本数。

2.5 数据样本

Prometheus 采集的数据样本都是以时间序列保存的,每个样本都由三个部分组成

  • 指标
  • 样本值: 64位浮点数和时间戳的组合代表这个时间点采集到的数据。
  • 时间戳