🧘 祺祺·技术笔记

← 返回首页

使用 Prometheus + Grafana 搭建服务监控体系

服务上线之后,监控是保证稳定运行的关键一环。本文记录使用 Prometheus 采集指标、Grafana 可视化的完整搭建流程,以及日常运维中常用的告警规则配置。

一、整体架构

监控体系由以下几个组件组成:

二、Prometheus 部署

使用 Docker 部署 Prometheus 是最快捷的方式。创建 prometheus.yml 配置文件:

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'node'
    static_configs:
      - targets: ['node-exporter:9100']

  - job_name: 'spring-app'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['app:8080']

Spring Boot 应用需要引入 micrometer-registry-prometheus 依赖才能暴露 Prometheus 格式的指标。

三、Grafana 配置与 Dashboard

同样使用 Docker 方式部署 Grafana,配置 Prometheus 作为数据源后,导入社区提供的 Dashboard 模板即可快速获得可视化面板。推荐几个常用的 Dashboard:

导入模板后,可以根据实际需求调整面板的展示方式和指标筛选条件。建议将常用的关键指标放在一个总览 Dashboard 上:首页展示 CPU 使用率、内存占用、磁盘 IO、网络流量、请求 QPS 和 P99 响应时间。

四、告警规则配置

在 Prometheus 中配置告警规则,当某些指标异常时触发告警:

groups:
- name: node_alerts
  rules:
  - alert: HighCpuUsage
    expr: (100 - avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "CPU 使用率超过 80%"

- name: app_alerts
  rules:
  - alert: HighErrorRate
    expr: rate(http_server_requests_seconds_count{status=~"5.."}[5m]) / rate(http_server_requests_seconds_count[5m]) > 0.05
    for: 3m
    labels:
      severity: critical
    annotations:
      summary: "接口错误率超过 5%"

for 参数表示指标持续异常多久才触发告警,可以避免因瞬时波动导致的误报。

五、告警通知集成

Alertmanager 配置通知路由。以钉钉为例,需要创建一个钉钉机器人,获取 Webhook 地址:

route:
  receiver: 'dingtalk'
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 4h

receivers:
- name: 'dingtalk'
  webhook_configs:
  - url: 'https://oapi.dingtalk.com/robot/send?access_token=xxx'
    send_resolved: true

group_interval 控制同一组告警的发送间隔,repeat_interval 控制重复告警的发送频率,默认 4 小时重发一次,避免告警轰炸。send_resolved 设为 true 后,问题恢复时也会发送通知,方便确认。

六、监控指标的解读思路

有了监控数据,关键是如何解读:

七、总结

Prometheus + Grafana 是开源监控领域的事实标准组合,社区生态丰富。搭建本身并不复杂,难点在于确定哪些指标需要监控、设置合理的阈值以及形成有效的告警响应流程。建议先监控最核心的系统和业务指标,逐步完善监控覆盖面,避免一开始就追求大而全导致维护成本过高。