Prometheus 是最主流的开源监控系统——定期抓取服务的指标(CPU、QPS、错误率),存起来,出问题就告警。这篇快速入门:监控什么、怎么配、怎么看、怎么告警。
一、解决什么问题:系统出事第一时间知道
系统挂了/慢了,等用户投诉才知道 = 被动。监控让系统自己说"我不行了":
- 指标异常(CPU 飙高、错误率上升)→ 自动告警 → 提前处理
- 事后看板 → 复盘性能趋势
二、核心架构
应用/服务 ──暴露 /metrics 指标──> Prometheus(抓取+存储)
│
├─> Grafana(可视化看板)
└─> Alertmanager(告警通知)| 组件 | 干什么 |
|---|---|
| Prometheus | 定时抓取指标、存时序数据、执行告警规则 |
| Grafana | 把指标画成可视化看板 |
| Alertmanager | 告警去重、路由、通知(钉钉/邮件) |
三、核心概念
| 概念 | 是什么 |
|---|---|
| 指标(Metric) | 一个可量化的值:http_requests_total、cpu_usage |
| 标签(Label) | 指标的维度:method="GET"、status="500" |
| 抓取(Scrape) | Prometheus 定期拉取服务的 /metrics |
| PromQL | 查询语言:rate(http_requests_total[5m]) = 每秒请求数 |
服务端怎么暴露指标:应用提供一个 /metrics 接口(Spring Boot 用 micrometer 自动暴露),Prometheus 配置里加一行抓取目标:
yaml
scrape_configs:
- job_name: 'my-app'
metrics_path: '/actuator/prometheus' # Spring Boot 的指标端点
static_configs:
- targets: ['app:8080']四、告警:Alertmanager
Prometheus 里定义规则,比如"错误率 5 分钟超 5% 就告警":
yaml
rules:
- alert: 高错误率
expr: sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) > 0.05
for: 5m # 持续 5 分钟才触发
labels:
severity: critical
annotations:
summary: "错误率超过 5%"触发后 Alertmanager 发通知(钉钉 webhook、邮件等),人收到告警去查——接上《线上调试》。
五、小结
- Prometheus 抓指标(/metrics)+ 存时序 + 告警规则
- Grafana 画看板,Alertmanager 发告警
- 核心指标:QPS、错误率、响应时间、CPU/内存
- 告警规则:指标表达式 + 持续时间,避免误报
想了解日志怎么收集(监控发现问题后用日志定位),看「日志收集快速入门」(文章整理中)。
