Prometheus监控告警体系实战:指标采集与Alertmanager告警路由配置

监控告警体系架构:指标采集、时序存储、告警分发三层

一套可用的监控告警体系由三个独立层组成:exporter负责采集指标并暴露/metrics端点,Prometheus Server按配置周期抓取并存储为时间序列,Alertmanager根据告警规则做聚合、去重、路由并分发到钉钉/飞书/邮件等渠道。三层各自独立,便于横向扩展与故障隔离。

告警链路的关键在于规则判定与分发解耦:Prometheus只负责计算表达式是否满足阈值,Alertmanager负责抑制、静默、分组与通知。多条并发告警不会轰炸接收人,同一故障引发的级联告警会被合并。

指标采集配置:node_exporter与prometheus.yml

每台目标主机部署node_exporter(默认监听9100),采集CPU、内存、磁盘、网络、文件系统指标。Prometheus主配置中的抓取任务写法:

global:
  scrape_interval: 15s
  evaluation_interval: 15s
alerting:
  alertmanagers:
    - static_configs:
        - targets: ["192.168.1.30:9093"]
rule_files:
  - /etc/prometheus/rules/*.yml
scrape_configs:
  - job_name: "node"
    static_configs:
      - targets: ["192.168.1.11:9100", "192.168.1.12:9100"]
        labels:
          env: prod
  - job_name: "nginx"
    metrics_path: /metrics
    static_configs:
      - targets: ["192.168.1.11:9113"]

scrape_interval控制数据采集频率,evaluation_interval控制告警规则评估频率。规模超过百台主机时改用file_sd_configs或consul_sd_configs做服务发现,避免静态targets维护成本过高。

告警规则编写:PromQL表达式与阈值设计

告警规则定义在rules.yml,一条典型规则包含表达式、持续时间与标签:

groups:
  - name: host_alerts
    rules:
      - alert: HostHighCPU
        expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
        for: 10m
        labels:
          severity: warning
        annotations:
          summary: "{{ $labels.instance }} CPU使用率超85%"
          description: "持续10分钟,当前值{{ $value | humanizePercentage }}"
      - alert: HostDown
        expr: up == 0
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "主机 {{ $labels.instance }} 失联"

for字段是告警的持续时间条件,只有表达式持续成立超过该时长才触发,过滤瞬时抖动;rate()计算5分钟内每秒增量,避免以累计值直接判断。severity标签被Alertmanager识别用于分组与路由。

Alertmanager告警路由与通知渠道配置

Alertmanager按路由树分发告警,根据标签匹配将不同级别的告警送到不同接收器:

route:
  group_by: ["alertname", "instance"]
  group_wait: 10s
  group_interval: 5m
  repeat_interval: 4h
  routes:
    - matchers: [severity="critical"]
      receiver: webhook-critical
    - matchers: [severity="warning"]
      receiver: webhook-warning

receivers:
  - name: webhook-critical
    webhook_configs:
      - url: http://monitor-tools:8080/alert/webhook
        send_resolved: true
  - name: webhook-warning
    webhook_configs:
      - url: http://monitor-tools:8080/alert/warn
        send_resolved: true

group_by按告警名与实例分组,同一组的告警在group_wait窗口内合并成一条通知;repeat_interval避免故障期间反复轰炸,恢复消息由send_resolved控制。实战中还要配合抑制规则:主机失联(critical)触发时,自动抑制该主机上磁盘、CPU等二级告警,避免故障期间产生几十条无效通知。

告警静默与值班对接

变更窗口期间需要临时抑制告警,可在Alertmanager Web UI按匹配标签创建静默,到期自动失效。长期运行的监控体系应把告警数据回流到工单系统:webhook接收器配合接收脚本即可对接钉钉机器人或飞书自定义机器人,机器人webhook地址通过环境变量注入,不写进配置文件明文。告警体系上线后可用amtool check-config做配置校验,并在演练阶段验证告警端到端送达时延。

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

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

相关推荐