【Prometheus 】【实战篇(五)】深入解析 Prometheus 监控指标类型:Counter、Gauge、Histogram 和 Summary

在这里插入图片描述

Prometheus 提供了四种核心的指标类型,分别是 Counter(计数器)、Gauge(仪表)、Histogram(直方图)和 Summary(摘要)。这些指标类型在客户端库中有具体的使用说明,允许 API 根据不同类型的指标提供针对性的操作。这些类型在 Prometheus 的协议中有明确区分,然而,Prometheus 服务器并不依赖这些类型信息,而是将所有数据扁平化为无类型的时间序列。将来这一点可能会有所变化。

下面是每种指标类型的详细介绍:


1. Counter(计数器)

概述
  • 定义:计数器是单调递增的累计指标,表示一个仅能增加或在重启时重置为零的值。计数器不可减少,用于表示某个事件发生的次数或某些累计的数值。
  • 常见用途:用于表示请求数、错误数、任务完成数等。
注意事项
  • 计数器的值永远不会减少。不要使用计数器来暴露可以减少的值(例如正在运行的进程数),应使用 Gauge
  • 常用于累积的事件计数,记录总数或累计量。
示例
http_requests_total{method="GET", status="200"} 1024

这个计数器记录了 GET 请求且返回 200 状态码的总数为 1024。

查询示例
  • 计算请求总数:
    sum(http_requests_total)
    

2. Gauge(仪表)

概述
  • 定义:仪表是一种可以增加、减少或保持不变的指标。它表示当前的数值,可以上下浮动,常用于测量某一时刻的状态或度量动态变化的量。
  • 常见用途:表示动态数据,如温度、内存使用、磁盘空间、并发请求数等。
注意事项
  • 仪表值可以增加、减少或保持不变。
  • 适用于表示系统的当前状态,例如 CPU 使用率、内存占用等。
示例
memory_usage_bytes{instance="server01"} 2048000000

表示服务器 server01 的内存使用量为 2048 MB。

查询示例
  • 获取当前的内存使用量:
    memory_usage_bytes
    

3. Histogram(直方图)

概述
  • 定义:直方图用于采样观测值(通常是请求持续时间或响应大小),并将它们分配到一个或多个可配置的桶中。它不仅可以记录数据的分布,还提供了所有观测值的总和。
  • 常见用途:用于分析请求的延迟分布、响应时间、数据包大小等。
组成
  • 直方图会暴露多个时间序列:
    • 观测桶计数器:记录每个桶中的观测数量,格式为 <basename>_bucket{le="<upper inclusive bound>"}
    • 总和:记录所有观测值的总和,格式为 <basename>_sum
    • 计数器:记录观察的事件数量,格式为 <basename>_count(与 <basename>_bucket{le="+Inf"} 相同)。
注意事项
  • 使用 histogram_quantile() 函数来计算直方图的分位数(如 P95、P99)。
  • 直方图适合用来计算 Apdex 分数。
  • Prometheus v2.40 版本开始提供实验性支持的原生直方图,提供更高的分辨率,性能更优。
示例
http_request_duration_seconds_bucket{le="0.5", method="GET"} 500
http_request_duration_seconds_bucket{le="1.0", method="GET"} 800
http_request_duration_seconds_bucket{le="2.0", method="GET"} 1000
http_request_duration_seconds_sum{method="GET"} 4000
http_request_duration_seconds_count{method="GET"} 1000

表示 GET 请求的响应时间分布,以及总的响应时间总和和计数。

查询示例
  • 获取 99 百分位的请求响应时间:
    histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))
    

4. Summary(摘要)

概述
  • 定义:摘要类似于直方图,但与直方图不同的是,它在滑动时间窗口内计算可配置的分位数(如 P50、P90、P95、P99 等)。它也提供了总计数和所有观测值的总和。
  • 常见用途:用于记录请求的响应时间、延迟分布等统计信息。
组成
  • 摘要会暴露多个时间序列:
    • 分位数:记录 φ 分位数(0 ≤ φ ≤ 1)的观测事件,格式为 <basename>{quantile="<φ>"}
    • 总和:记录所有观测值的总和,格式为 <basename>_sum
    • 计数器:记录观察的事件数量,格式为 <basename>_count
注意事项
  • 摘要适用于高效计算百分位数,不需要配置桶。
  • 摘要的分位数是实时计算的,适合记录如请求延迟的动态数据。
示例
http_request_duration_seconds{quantile="0.95", method="GET"} 0.5
http_request_duration_seconds_sum{method="GET"} 1000
http_request_duration_seconds_count{method="GET"} 500

表示 GET 请求的 95 百分位响应时间为 0.5 秒,总响应时间为 1000 秒,共有 500 次请求。

查询示例
  • 获取 95 百分位的响应时间:
    http_request_duration_seconds{method="GET", quantile="0.95"}
    

指标类型总结

指标类型特点常见用途示例
Counter仅增不减,表示累计数值。记录事件总数,如请求数、错误数、任务完成数。http_requests_total(HTTP 请求总数)
Gauge值可以增加、减少或保持不变。记录动态变化的数据,如温度、内存、并发请求数。memory_usage_bytes(内存使用量)
Histogram记录数据分布,使用桶统计数据。分析数据分布,如请求延迟、响应时间。http_request_duration_seconds_bucket(响应时间分布)
Summary记录统计信息和百分位数,支持滑动时间窗口。计算分位数和统计信息,如请求延迟。http_request_duration_seconds(延迟统计)
  • Counter:用于表示累积计数(如请求数、错误数)。
  • Gauge:用于表示当前状态的动态数据(如内存、CPU 使用)。
  • HistogramSummary:用于处理数据的分布和百分位数,Histogram 更适合用于延迟分布的分析,Summary 用于更精确的实时百分位数计算。

了解并合理选择 Prometheus 指标类型是有效监控和数据分析的关键。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值