1.6 Prometheus 的 Metric 数据类型

Prometheus 客户端提供了四种核心度量类型,在不同的场景下这些 Metric 有一些细微的差异,在存储时没有任何差异。 例如,在 Node Exporter 返回的样本中指标 node_load1 反应的是当前系统的负载状态,随着时间的变化这个指标返回的样本数据是在不断变化的。而指标 node_cpu 所获取到的样本数据却不同,它是一个持续增大的值,因为其反应的是CPU的累积使用时间,从理论上讲只要系统不关机,这个值是会无限变大的。

为了能够帮助用户理解和区分这些不同监控指标之间的差异,Prometheus 定义了4中不同的指标类型(metric type):Counter(计数器)、Gauge(仪表盘)、Histogram(直方图)、Summary(摘要)。还有一种基本不会看到的 Untyped 类型。

Prometheus 约定,在 Exporter 返回的数据中,在注释中要包含了该数据的类型。例如:

# HELP node_cpu Seconds the cpus spent in each mode.
# TYPE node_cpu counter
node_cpu{cpu="cpu0",mode="idle"} 362812.7890625

Counter

Counter 表示收集的数据是按照某个趋势(增加/减少)一直变化的,是一个累积度量,它表示一个单调递增的计数器。其值在重新启动时只能递增或重置为零。我们往往用它记录服务请求总量、错误总数等。

不要使用计数器来记录可能降低的值。例如,不要为当前正在运行的进程的数量使用 Counter,对于这种应该使用 Gauge 。

例如 Prometheus server 中 http_requests_total, 表示 Prometheus 处理的 http 请求总数,这个数值会一直累积。

Gauge

Gauge 表示搜集的数据是一个瞬时的值,它与时间没有关系,可以任意变高变低的值。往往可以用来记录内存使用率、磁盘使用率、并发请求数量等经常变化的指标。

例如 Prometheus server 中 go_goroutines, 表示 Prometheus 当前 goroutines 的数量。

Histogram

Histogram 主要用于表示一段时间范围内对数据进行采样,(通常是请求持续时间或响应大小),并能够对其指定区间以及总数进行统计,通常我们用它计算分位数的直方图。

在 Prometheus 系统中,三种数据的作用度量指标名称

_bucket{le=”上边界”}: 这个值为小于等于上边界的所有采样点数量,对每个采样点进行统计,打到各个分类值中(bucket)

_sum: 对每个采样点值累计和(sum)

_count: 对采样点的次数累计和(count) 小结:所以如果定义一个度量类型为Histogram,则Prometheus系统会自动生成三个对应的指标

例如 Prometheus server 中 prometheus_local_storage_series_chunks_persisted, 表示 Prometheus 中每个时序需要存储的 chunks 数量,我们可以用它计算待持久化的数据的分位数。

Summary

Summary 和 Histogram 类似,主要用于表示一段时间内数据采样结果,(通常是请求持续时间或响应大小),它直接存储了 quantile 数据,而不是根据统计区间计算出来的。

它由 {quantile="<φ>"},_sum,_count 组成 。

对于每个采样点进行统计,并形成分位图。举个例子,和正态分布一样,统计低于60分不及格的同学比例,统计低于80分的同学比例,统计低于95分的同学比例

统计班上所有同学的总成绩(sum) 统计班上同学的考试总人数(count) 带有度量指标的 的 summary 在抓取时间序列数据展示。

观察时间的 φ-quantiles (0 ≤ φ ≤ 1), 显示为 {分位数="[φ]"}

_sum, 是指所有观察值的总和

_count, 是指已观察到的事件计数值

Untyped

一个正常的 Metric 应该有三行数据,第一行是 HELP 信息,第二行是 TYPE 信息,第三行是 Metric 数据本身,如果缺少了第二行的 TYPE 信息,那么在 Prometheus 里查询出来的数据类型就是 Untyped

results matching ""

    No results matching ""