从存储的角度来讲,Promethues 中所有的监控指标 Metric 都是相同的。但是在不同的场景下,这些 Metric 又有一些细微的差异。 例如在 node exporter 返回的样本中:
为了能够帮助用户理解和区分这些不同监控指标之间的差异,Prometheus 定义了 4 种不同的指标类型(Metric Type),分别是:Counter(计数器)、Gauge(仪表盘)、Histogram(直方图)、Summary(摘要)。
Metric 类型 | 说明 | 常用指标 |
---|---|---|
Counter | Counter 类型的指标和计数器一样,只增不减(除非系统发生重置)。常见的监控指标,例如 说明 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)。 | 各类延迟、耗时类指标 |
Summary | Summary 与 Histogram 一样,可以用来查看数据的分布情况。但与 Histogram 不同的是,Summary 返回的是计算后数据(中位数的具体值)。因此,它相比 Histogram 省略了在查询时的计算消耗,但是也丢失了原始的样本数据。 |