Skip to content

Prometheus 是最主流的开源监控系统——定期抓取服务的指标(CPU、QPS、错误率),存起来,出问题就告警。这篇快速入门:监控什么、怎么配、怎么看、怎么告警。

一、解决什么问题:系统出事第一时间知道

系统挂了/慢了,等用户投诉才知道 = 被动。监控让系统自己说"我不行了"

  • 指标异常(CPU 飙高、错误率上升)→ 自动告警 → 提前处理
  • 事后看板 → 复盘性能趋势

二、核心架构

应用/服务 ──暴露 /metrics 指标──> Prometheus(抓取+存储)

                                      ├─> Grafana(可视化看板)
                                      └─> Alertmanager(告警通知)
组件干什么
Prometheus定时抓取指标、存时序数据、执行告警规则
Grafana把指标画成可视化看板
Alertmanager告警去重、路由、通知(钉钉/邮件)

三、核心概念

概念是什么
指标(Metric)一个可量化的值:http_requests_totalcpu_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/内存
  • 告警规则:指标表达式 + 持续时间,避免误报

想了解日志怎么收集(监控发现问题后用日志定位),看「日志收集快速入门」(文章整理中)。