写点什么

Prometheus 的 Metric 数据类型

用户头像
耳东@Erdong
关注
发布于: 刚刚

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 counternode_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 系统中,三种数据的作用度量指标名称


<basename>_bucket{le=”上边界”}: 这个值为小于等于上边界的所有采样点数量,对每个采样点进行统计,打到各个分类值中(bucket)<basename>_sum: 对每个采样点值累计和(sum)<basename>_count: 对采样点的次数累计和(count)小结:所以如果定义一个度量类型为 Histogram,则 Prometheus 系统会自动生成三个对应的指标


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

Summary

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


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


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


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


观察时间的 φ-quantiles (0 ≤ φ ≤ 1), 显示为 <basename>{分位数="[φ]"}<basename>_sum, 是指所有观察值的总和<basename>_count, 是指已观察到的事件计数值

Untyped

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

发布于: 刚刚阅读数: 2
用户头像

耳东@Erdong

关注

还未添加个人签名 2020.05.24 加入

主要研究分享运维技术,专注于监控、CICD、操作系统、云原生领域,公众号【耳东学堂】,知识星球同名,坚持原创,希望能和大家在运维路上结伴而行 邮箱:erdong@mail.erdong.site

评论

发布
暂无评论
Prometheus 的 Metric 数据类型