You need to enable JavaScript to run this app.
导航

Prometheus Metrics 类型

最近更新时间2023.08.29 15:25:40

首次发布时间2023.02.28 17:57:43

从存储的角度来讲,Promethues 中所有的监控指标 Metric 都是相同的。但是在不同的场景下,这些 Metric 又有一些细微的差异。 例如在 node exporter 返回的样本中:

  • 指标 node_load1 反应的是当前系统的负载状态,随着时间的变化这个指标返回的样本数据是在不断变化的。
  • 指标 node_cpu_seconds_total 所获取到的样本数据却不同,它是一个持续增大的值,因为其反映的是节点 CPU 的累积使用时间。因此从理论上讲,只要节点不关机,这个值会持续变大。

为了能够帮助用户理解和区分这些不同监控指标之间的差异,Prometheus 定义了 4 种不同的指标类型(Metric Type),分别是:Counter(计数器)、Gauge(仪表盘)、Histogram(直方图)、Summary(摘要)。

Metric 类型说明常用指标

Counter

Counter 类型的指标和计数器一样,只增不减(除非系统发生重置)。常见的监控指标,例如http_requests_totalnode_cpu_seconds_total 都是 Counter 类型的监控指标。Counter 类型的指标名称常使用 _total 作为后缀。

说明

Counter 是一个简单但强大的指标,但需要明确的是,某项指标的累计值,对于用户了解系统状态来说,没什么直接的价值。因此,Counter 指标常搭配 rate 或 increase 函数,通过取 范围向量(range vector) 来使用。

CPU 使用时间,网络流量,请求量

Gauge与 Counter 类型不同,Gauge 类型的指标侧重于反应系统的当前状态。因此这类指标的样本数据可增可减。例如 node_memory_MemFree_bytes(主机当前空闲的内存大小)、container_memory_usage_bytes (容器当前内存大小)都是 Gauge 类型的监控指标。内存用量,硬盘空间,服务运行状态

Histogram

Counter 指标存在一个问题:它只能被计算为均值。而对于类似 接口请求延迟 类的数据,仅仅有平均值还不够。还需要看到数据的分布情况,甚至计算百分位数(quantile)。

对于这类数据,Prometheus 提供了 2 种指标类型:histogram 和 Summary。其中,Histogram 的原理是提前定义多个 buckets,覆盖所有可能的样本;采集到新样本时,这个样本会落入某个 bucket 内。使用时,我们可以利用样本在各个 bucket 的分布情况计算 quantile。展示时,histogram 尤其适合绘制火焰图(heat map)。

各类延迟、耗时类指标

SummarySummary 与 Histogram 一样,可以用来查看数据的分布情况。但与 Histogram 不同的是,Summary 返回的是计算后数据(中位数的具体值)。因此,它相比 Histogram 省略了在查询时的计算消耗,但是也丢失了原始的样本数据。