跳到主要内容

Prometheus 指标类型

Prometheus 是一个强大的监控和告警工具,它通过收集和存储时间序列数据来帮助用户监控系统状态。在 Prometheus 中,指标(Metrics)是监控的核心,而指标类型则决定了这些数据的含义和用途。本文将详细介绍 Prometheus 中的四种核心指标类型:CounterGaugeHistogramSummary,并通过实际案例帮助你理解它们的使用场景。


1. 什么是 Prometheus 指标类型?

Prometheus 中的指标类型定义了数据的性质和用途。每种类型都有其特定的行为和适用场景。理解这些类型是正确使用 Prometheus 的关键。

Prometheus 支持以下四种核心指标类型:

  1. Counter(计数器)
  2. Gauge(仪表盘)
  3. Histogram(直方图)
  4. Summary(摘要)

接下来,我们将逐一介绍这些类型。


2. Counter(计数器)

2.1 特点

  • 单调递增:Counter 类型的值只能增加或保持不变,不能减少。
  • 适合计数:常用于记录事件发生的次数,例如 HTTP 请求总数、错误次数等。
  • 支持重置:当进程重启时,Counter 可能会重置为 0。

2.2 示例

以下是一个 Counter 类型的指标示例,用于记录 HTTP 请求的总数:

prometheus
http_requests_total{method="GET", status="200"} 1027
http_requests_total{method="POST", status="500"} 3

2.3 实际应用

  • 记录 API 请求的总数。
  • 监控错误发生的次数。
提示

使用 rate() 函数可以计算 Counter 的增长速率,例如 rate(http_requests_total[1m]) 可以计算每分钟的请求速率。


3. Gauge(仪表盘)

3.1 特点

  • 可增可减:Gauge 类型的值可以随意增加或减少。
  • 适合实时值:常用于记录当前状态,例如 CPU 使用率、内存使用量等。

3.2 示例

以下是一个 Gauge 类型的指标示例,用于记录当前的内存使用量:

prometheus
memory_usage_bytes{instance="localhost:9090"} 512345678

3.3 实际应用

  • 监控系统的 CPU 使用率。
  • 记录当前连接数。
备注

Gauge 类型的值可以直接用于告警规则,例如当内存使用量超过某个阈值时触发告警。


4. Histogram(直方图)

4.1 特点

  • 分桶统计:Histogram 将数据划分为多个桶(Bucket),并记录每个桶中的数据量。
  • 适合分布分析:常用于分析请求延迟、响应时间等分布情况。

4.2 示例

以下是一个 Histogram 类型的指标示例,用于记录 HTTP 请求的延迟分布:

prometheus
http_request_duration_seconds_bucket{le="0.1"} 100
http_request_duration_seconds_bucket{le="0.5"} 300
http_request_duration_seconds_bucket{le="1"} 500
http_request_duration_seconds_bucket{le="+Inf"} 1000
http_request_duration_seconds_sum 450
http_request_duration_seconds_count 1000

4.3 实际应用

  • 分析 API 请求的延迟分布。
  • 监控数据库查询的响应时间。
警告

Histogram 的桶边界是固定的,因此在设计时需要根据实际需求选择合适的桶范围。


5. Summary(摘要)

5.1 特点

  • 分位数统计:Summary 直接计算分位数(例如 50%、90%、99%),而不是分桶。
  • 适合精确分析:常用于需要精确分位数的场景。

5.2 示例

以下是一个 Summary 类型的指标示例,用于记录 HTTP 请求的延迟分位数:

prometheus
http_request_duration_seconds{quantile="0.5"} 0.1
http_request_duration_seconds{quantile="0.9"} 0.5
http_request_duration_seconds{quantile="0.99"} 1.0
http_request_duration_seconds_sum 450
http_request_duration_seconds_count 1000

5.3 实际应用

  • 精确分析 API 请求的延迟分位数。
  • 监控关键业务指标的分位数。
注意

Summary 的分位数是在客户端计算的,因此可能会增加客户端的计算负担。


6. 总结

Prometheus 的四种指标类型各有其特点和适用场景:

  • Counter:用于记录单调递增的事件计数。
  • Gauge:用于记录可增可减的实时值。
  • Histogram:用于分析数据的分布情况。
  • Summary:用于精确计算分位数。

理解这些类型的特点和适用场景,可以帮助你更好地设计监控系统并分析数据。


7. 附加资源与练习

7.1 附加资源

7.2 练习

  1. 使用 Counter 记录一个自定义事件的次数。
  2. 使用 Gauge 监控系统的 CPU 使用率。
  3. 使用 Histogram 分析 API 请求的延迟分布。
  4. 使用 Summary 计算关键业务指标的分位数。

通过实践这些练习,你将更深入地理解 Prometheus 指标类型的应用。