当前位置: 首页 > news >正文

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_bytes

3. 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)) * 100

3. 磁盘指标

node_filesystem_size_bytes node_filesystem_avail_bytes

👉 磁盘使用率:

(1 - avail / size) * 100

4. 网络指标

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_bytes

2. Pod 状态

kube_pod_status_phase

3. Deployment 状态

kube_deployment_status_replicas kube_deployment_status_replicas_available

4. 容器重启次数

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_seconds

3. 指标要有业务意义

不要只监控系统资源,还要关注:

  • 成功率
  • 延迟
  • 用户行为

4. 四大黄金信号(Golden Signals)

由 Google SRE 提出:

  1. 延迟(Latency)
  2. 流量(Traffic)
  3. 错误(Errors)
  4. 饱和度(Saturation)

七、总结

Prometheus 的监控体系可以分为三层:

1️⃣ 系统层

  • CPU / 内存 / 磁盘 / 网络

2️⃣ 平台层(K8s)

  • Pod / Deployment / 容器状态

3️⃣ 业务层

  • QPS / 错误率 / 延迟

👉 真正有效的监控,不是指标多,而是:

  • 能发现问题
  • 能定位问题
  • 能驱动告警和决策
http://www.cnnetsun.cn/news/1975480.html

相关文章:

  • 从零散笔记到知识网络:Zotero Better Notes如何重塑学术工作流
  • Z-Image-GGUF提示词入门:‘主体+风格+光照+质量’四步法详解
  • 如何快速解密网易云音乐NCM文件:ncmdump完整指南
  • **发散创新:基于Python与ROS的机器人运动控制实战解析**在现代机器人系统开发
  • 保姆级教程:用STM32CubeMX配置MPU6050陀螺仪,5分钟搞定平衡小车姿态数据读取
  • VCS仿真dump fsdb波形踩坑实录:从$test$plusargs到UCLI的避坑指南
  • 零基础玩转JDY-31蓝牙模块:从硬件连接到参数配置的保姆级教程
  • 开源风扇控制方案:用Fan Control打造个性化静音散热系统
  • 5个步骤从零开始:用OBS StreamFX打造电影级直播画面
  • STM32 SAI接口实战:用CubeMX快速配置多通道音频采集(附DMA优化技巧)
  • sql_exporter配置避坑指南:手把手教你处理多表关联查询和动态标签(以用户订单分析为例)
  • 手把手推导:从面积等效原理到SVPWM发波,用几何图解代替复杂公式
  • 避开Matlab优化那些坑:fmincon参数设置、初始点选择与非线性约束函数编写避坑指南
  • Python的__get__、__set__、__delete__描述符协议完整实现
  • 避坑指南:开启Linux Framebuffer Console后系统卡住?排查LCD驱动里的这两个关键点
  • 别再傻傻等5秒了!实战中优化时间盲注效率的3个技巧(附Python脚本调优)
  • 【C++】中INI配置文件读取技术详解
  • ncmdump技术架构深度解析:网易云音乐加密文件转换机制
  • 番茄小说下载器:打造个人离线小说图书馆的终极解决方案
  • 终极指南:5分钟掌握Blender与虚幻引擎PSK/PSA文件互转
  • 从葡萄酒评价到无人机编队:用Python实战复现数学建模经典赛题(附完整代码)
  • APP广告网站与APP后台分离策略
  • 氮化铝缓冲层 HEMT最新研究
  • 实测Sonic数字人:上传MP3和图片,一键生成口型同步视频
  • 终极指南:3分钟了解OpenCore Legacy Patcher如何让旧Mac重获新生 [特殊字符]
  • 告别系统软键盘!Unity UGUI自制虚拟键盘全流程(附C#源码,支持触屏设备)
  • 支付宝周期扣款实战:从签约到主动扣款的完整Java代码与避坑指南
  • Qwen2.5-7B-Instruct生成实测:中文技术文档→英文版自动翻译润色
  • 35+平台文档下载革命:告别繁琐验证,一键保存所有可见内容
  • CefFlashBrowser:Flash怀旧游戏的终极解决方案,让经典永不落幕