监控告警体系实战:Prometheus采集与Grafana告警方案

监控告警体系是保障线上稳定性的基础设施。没有监控的系统,故障靠用户反馈发现,定位靠人肉排查。一套完整的监控告警体系包含指标采集、存储查询、告警触发、通知分发四个环节,本文用 Prometheus + Grafana + Alertmanager 组合演示从零搭建的过程。

监控告警体系分层:基础设施与业务指标

指标采集需要分层设计。基础设施层关注 CPU、内存、磁盘、网络;中间件层关注 Redis 命中率、MySQL 慢查询数、Kafka 堆积量;应用层关注 QPS、延迟、错误率、熔断次数。层与层之间的指标要能互相串联:接口变慢时能一路查到是数据库问题还是容器资源问题。

Prometheus 采用拉取模型,每个目标暴露 /metrics 端点,服务端定时抓取。指标由指标名和标签组成,标签用于维度切分,比如 http_requests_total{method=”POST”, status=”500″}。

Prometheus 指标采集:Node Exporter 与服务发现

# prometheus.yml 核心配置
global:
  scrape_interval: 15s
scrape_configs:
  - job_name: "node"
    static_configs:
      - targets: ["10.0.0.11:9100", "10.0.0.12:9100"]
  - job_name: "app"
    metrics_path: /actuator/prometheus
    kubernetes_sd_configs:
      - role: pod

采集配置建议与资产清单分离:新增机器只改配置组,告警规则和 dashboard 无需改动,即配置即生效。

告警规则与 Alertmanager 路由配置

告警规则用 PromQL 描述异常条件,配合 for 关键字做持续判定,避免瞬时抖动误报。Alertmanager 负责把告警路由到正确的接收方,并按紧急程度分级。

# rules.yml
groups:
  - name: infra
    rules:
      - alert: CpuHigh
        expr: 100 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) > 90
        for: 5m
        labels:
          severity: page
        annotations:
          summary: "{{ $labels.instance }} CPU 使用率超过 90%"

# alertmanager.yml
route:
  group_by: ["alertname"]
  routes:
    - match_re:
        severity: page
      receiver: oncall-webhook
receivers:
  - name: oncall-webhook
    webhook_configs:
      - url: "http://10.0.0.8:8080/alert/callback"

Alertmanager 的抑制规则很有价值:服务器宕机时,该机器上所有中间件、应用告警都会同时触发,配置抑制规则后只发一条主机告警,避免告警风暴刷爆值班群。

Grafana 可视化与告警收敛

Grafana 负责把指标变成可读的面板,接入 Prometheus 数据源后,常用 JSON 面板直接导入即可。告警收敛还依赖标签规范化:每台机器、每个应用打上统一的 environment、region 标签,告警路由和聚合才能按这些维度切分。监控搭好后,定期做一次故障演练,模拟一台机器宕机,验证告警能否在预期时间内到达指定接收人。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/jian-kong-gao-jing-ti-xi-shi-zhan-prometheus-cai-ji-yu/

(0)
小编小编
上一篇 4小时前
下一篇 4小时前

相关推荐