Prometheus常见监控指标Metrics(Prometheus指标)(Counter计数器、Gauge仪表盘、Histogram直方图、Summary摘要)时间序列
文章目录
- Prometheus 常见监控指标详解
- 一、Prometheus 指标模型
- 二、四大核心指标类型
- 1. Counter(计数器)
- 2. Gauge(仪表盘)
- 3. Histogram(直方图)
- 4. Summary(摘要)
- 三、常见系统级监控指标
- 1. CPU 指标
- 2. 内存指标
- 3. 磁盘指标
- 4. 网络指标
- 四、Kubernetes 常见指标
- 1. Pod 资源使用
- 2. Pod 状态
- 3. Deployment 状态
- 4. 容器重启次数
- 五、应用层指标(业务监控)
- 1. HTTP 指标
- 2. 错误率
- 3. QPS(每秒请求数)
- 4. 延迟指标
- 六、常见监控指标设计建议
- 1. 标签设计要合理
- 2. 命名规范
- 3. 指标要有业务意义
- 4. 四大黄金信号(Golden Signals)
- 七、总结
- 1️⃣ 系统层
- 2️⃣ 平台层(K8s)
- 3️⃣ 业务层
Prometheus 常见监控指标详解
在现代云原生体系中,Prometheus 已成为事实标准的监控系统之一。它通过拉取(Pull)方式采集指标(Metrics),并配合告警系统实现对系统运行状态的实时观测。
理解 Prometheus 的指标类型和常见指标,是做好可观测性的第一步。
一、Prometheus 指标模型
Prometheus 的核心数据模型是时间序列(Time Series),每条数据由以下组成:
- 指标名(Metric Name)
- 标签(Labels)
- 时间戳(Timestamp)
- 数值(Value)
例如:
http_requests_total{method="GET", status="200"} 1024👉 表示:GET 请求返回 200 的次数为 1024
注意:时间戳始终存在,只是在/metrics文本格式输出中通常不显示,当 Prometheus 服务器抓取这个指标时,会自动记录抓取时刻的时间戳,存储到时间序列数据库中。
二、四大核心指标类型
Prometheus 定义了四种基础指标类型:
1. Counter(计数器)
特点:
- 单调递增(只增不减)
- 重启后归零
适用场景:
- 请求总数
- 错误总数
- 任务完成次数
示例:
http_requests_total常用函数:
rate():计算每秒增长率increase():一段时间内增长量
👉 示例:
rate(http_requests_total[5m])2. Gauge(仪表盘)
特点:
- 可增可减
- 表示瞬时值
适用场景:
- CPU 使用率
- 内存使用量
- 当前连接数
示例:
node_memory_MemAvailable_bytes3. Histogram(直方图)
特点:
- 统计分布情况
- 自动分桶(bucket)
适用场景:
- 请求延迟
- 响应时间
指标结构:
一个 Histogram 实际包含三类指标:
_bucket_sum_count
示例:
http_request_duration_seconds_bucket http_request_duration_seconds_sum http_request_duration_seconds_count👉 常用于计算 P95 / P99:
histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))4. Summary(摘要)
特点:
- 直接计算分位数(quantile)
- 客户端计算
适用场景:
- 延迟分析(轻量级)
示例:
http_request_duration_seconds{quantile="0.95"}⚠️ 与 Histogram 区别:
| 类型 | 分位数计算 | 聚合能力 |
|---|---|---|
| Histogram | 服务端 | 强 |
| Summary | 客户端 | 弱 |
👉 一般推荐使用 Histogram(更适合分布式系统)
三、常见系统级监控指标
结合 Node Exporter / K8s 场景,以下指标最常用:
1. CPU 指标
node_cpu_seconds_total👉 CPU 使用率计算:
100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)2. 内存指标
node_memory_MemTotal_bytes node_memory_MemAvailable_bytes👉 内存使用率:
(1 - (MemAvailable / MemTotal)) * 1003. 磁盘指标
node_filesystem_size_bytes node_filesystem_avail_bytes👉 磁盘使用率:
(1 - avail / size) * 1004. 网络指标
node_network_receive_bytes_total node_network_transmit_bytes_total👉 网络吞吐量:
rate(node_network_receive_bytes_total[5m])四、Kubernetes 常见指标
在 Kubernetes 环境中,常见指标包括:
1. Pod 资源使用
container_cpu_usage_seconds_total container_memory_usage_bytes2. Pod 状态
kube_pod_status_phase3. Deployment 状态
kube_deployment_status_replicas kube_deployment_status_replicas_available4. 容器重启次数
kube_pod_container_status_restarts_total👉 用于检测异常 CrashLoop
五、应用层指标(业务监控)
应用指标通常通过 SDK 或中间件暴露:
1. HTTP 指标
http_requests_total http_request_duration_seconds👉 可按标签细分:
- method(GET/POST)
- status(200/500)
- path(API 路径)
2. 错误率
rate(http_requests_total{status=~"5.."}[5m])3. QPS(每秒请求数)
sum(rate(http_requests_total[1m]))4. 延迟指标
- P50(中位数)
- P95(尾延迟)
- P99(极端情况)
六、常见监控指标设计建议
1. 标签设计要合理
避免:
user_id="123456"👉 会导致高基数问题(High Cardinality)
2. 命名规范
Prometheus 指标命名建议:
<namespace>_<subsystem>_<metric>_<unit>例如:
http_request_duration_seconds3. 指标要有业务意义
不要只监控系统资源,还要关注:
- 成功率
- 延迟
- 用户行为
4. 四大黄金信号(Golden Signals)
由 Google SRE 提出:
- 延迟(Latency)
- 流量(Traffic)
- 错误(Errors)
- 饱和度(Saturation)
七、总结
Prometheus 的监控体系可以分为三层:
1️⃣ 系统层
- CPU / 内存 / 磁盘 / 网络
2️⃣ 平台层(K8s)
- Pod / Deployment / 容器状态
3️⃣ 业务层
- QPS / 错误率 / 延迟
👉 真正有效的监控,不是指标多,而是:
- 能发现问题
- 能定位问题
- 能驱动告警和决策
