Prometheus 指标类型详解
· 阅读需 5 分钟
在 Prometheus 生态系统中,指标(Metrics)是最基础的数据类型。理解不同类型的指标及其适用场景,对于构建有效的监控系统至关重要。本文将详细介绍 Prometheus 的四种核心指标类型。
Counter(计数器)
定义
Counter 是一个只增不减的累计指标。它的值只能增加或在重启时重置为零。
特点
- 单调递增
- 只能增加或重置为零
- 常用于计数场景
使用场景
# 常见的 Counter 指标
http_requests_total # HTTP 请求总数
node_network_receive_bytes # 网络接收字节数
errors_total # 错误总数
最佳实践
# 计算速率(每秒请求数)
rate(http_requests_total[5m])
# 计算一段时间内的增量
increase(http_requests_total[1h])
Gauge(仪表盘)
定义
Gauge 是可以任意上下波动的指标,可增可减。
特点
- 可增可减
- 反映瞬时状态
- 适合记录当前状态
使用场景
# 常见的 Gauge 指标
node_memory_MemAvailable_bytes # 可用内存
node_cpu_usage_percent # CPU 使用率
temperature_celsius # 温度
最佳实践
# 直接使用当前值
node_memory_MemAvailable_bytes
# 计算变化率
delta(temperature_celsius[1h])
Histogram(直方图)
定义
Histogram 对观察值进行采样,并将其计入可配置的桶(bucket)中,同时提供所有观察值的总和。
特点
- 包含多个桶计数
- 自动计算总和和样本数
- 支持分位数计算
组成部分
# 一个 Histogram 指标会自动生成以下数据:
<basename>_bucket{le="<upper inclusive bound>"} # 桶计数
<basename>_sum # 所有观察值的总和
<basename>_count # 观察值的总数
使用场景
# HTTP 请求延迟分布
http_request_duration_seconds_bucket{le="0.1"} # 100ms 内的请求数
http_request_duration_seconds_sum # 总延迟时间
http_request_duration_seconds_count # 总请求数
# 计算 P90 延迟
histogram_quantile(0.9,
rate(http_request_duration_seconds_bucket[5m])
)
Summary(摘要)
定义
Summary 类似于 Histogram,但它直接在客户端计算分位数。