📊 Prometheus+Grafana监控体系

03-08 | 工具链PrometheusGrafana结果分析

📌 一句话概括

压测不看监控等于闭着眼开车——Prometheus负责采集和存储指标,Grafana负责可视化展示,两者结合形成性能测试的"实时仪表盘",帮助你在压测过程中实时发现异常、定位瓶颈。

💡 监控体系架构

数据采集链路

应用层 → Exporter → Prometheus → Grafana:

  1. Exporter(采集器):部署在各服务器上,将系统指标转换为Prometheus格式。常用:Node Exporter(OS指标)、JMX Exporter(JVM指标)、MySQL Exporter(数据库指标)
  2. Prometheus Server:定时拉取(Pull模式)Exporter的指标数据,存储时序数据
  3. Grafana:连接Prometheus数据源,通过Dashboard将指标数据可视化为图表

核心监控指标

层级指标Exporter告警阈值参考
OS层CPU使用率、内存、磁盘IO、网络吞吐Node ExporterCPU>80%,磁盘IO util>70%
JVM层堆内存、GC频率/耗时、线程数JMX ExporterFull GC频率>1次/小时
中间件连接池使用率、活跃线程数自定义Exporter连接池使用率>80%
数据库QPS、慢查询数、连接数、锁等待MySQL Exporter慢查询>10条/分钟
应用层请求量、响应时间、错误率Micrometer/APMP99>SLA×1.5

📈 压测结果分析实战

Grafana Dashboard设计原则

  1. 分层展示:第一行展示业务指标(TPS、RT、错误率),第二行展示资源指标(CPU、内存、IO),第三行展示中间件/数据库指标
  2. 时间轴对齐:所有面板使用统一时间轴,确保看到的是同一时刻的系统状态
  3. 叠加标注:在Grafana中标注压测开始/结束时间和每个加压阶梯,方便事后复盘

结果分析流程

  1. 总体概览:先看TPS和响应时间是否达标,错误率是否在阈值内
  2. 瓶颈定位:若TPS达不到目标,依次排查CPU→内存→IO→数据库→应用日志
  3. 关联分析:将TPS曲线与CPU曲线、GC曲线叠加分析,找出因果关系
  4. 报告输出:导出Grafana面板快照作为测试报告附件

🔍 测试实战

1. 压测监控Dashboard搭建

操作:在压测环境部署Node Exporter + JMX Exporter + MySQL Exporter,Prometheus配置scrape_interval: 15s。导入Grafana社区模板(如Node Exporter Full、JVM Micrometer),自定义添加业务TPS面板。

2. 实时告警配置

操作:在Prometheus配置告警规则——如CPU>85%持续5分钟触发PagerDuty告警、P99响应时间>SLA目标触发企微通知。

⚠️ 常见坑点

  1. 监控盲区——只监控应用服务器不监控数据库/网络设备,80%的性能瓶颈出在监控盲区
  2. 采集间隔过大——Prometheus scrape_interval设为60s会遗漏短时尖峰,建议15s以内
  3. 磁盘空间耗尽——Prometheus默认保留15天数据在高频写入下可能填满磁盘,需配置retention策略

📖 延伸阅读