运维

运维相关知识和内容

Prometheus告警降噪实战:AlertManager抑制策略+Robusta AI分析,噪音降低85%

问题:告警疲劳正在摧毁SRE团队

我们的数据: - 每日告警:4,200条 | 需人工处理:180条(4.3%) - On-Call每夜被叫醒:3.7次 | 真正需处理:0.8次 - 90%是噪音,工程师开始"告警免疫"

花3个月系统性解决,告警降到630条/日,零漏报。


一、告警四级体系

P0(15分钟SLA):核心API成功率<99.5%、支付故障、数据丢失风险
P1(30分钟):非核心错误率>5%、主从延迟>30s
P2(工作时间):磁盘>80%、证书<30天到期
P3(定期回顾):信息性告警、轻微性能降级

二、AlertManager核心配置

route:
  group_by: ['alertname', 'cluster', 'namespace']
  group_wait: 30s
  repeat_interval: 4h

  routes:
  - matchers:
    - severity="critical"
    group_wait: 0s  # P0立即发送,不等待聚合
    receiver: pagerduty-critical

# 关键:级联抑制规则
# P0存在时,抑制同命名空间的P1/P2
inhibit_rules:
- source_matchers:
  - severity="critical"
  target_matchers:
  - severity=~"warning|info"
  equal: ['cluster', 'namespace']

多窗口告警规则(减少瞬时误报)

- alert: APIHighErrorRate
  expr: |
    (rate(http_requests_total{status=~"5.."}[5m]) /
     rate(http_requests_total[5m])) > 0.01
    and
    (rate(http_requests_total{status=~"5.."}[1h]) /
     rate(http_requests_total[1h])) > 0.005
  for: 3m
  labels:
    severity: critical
  annotations:
    runbook: "https://wiki.internal/runbooks/high-error-rate"
    grafana: "https://grafana.internal/d/api?var-service={{ $labels.service }}"

三、Robusta AI根因分析

helm install robusta robusta/robusta \
    --set ai.enabled=true \
    --set ai.apiKey=$OPENAI_API_KEY
@on_prometheus_alert(alert_name="PodCrashLooping")
def crash_loop_analysis(alert):
    logs = pod_running_logs(alert.pod.metadata.name, previous=True)
    events = get_pod_events(alert.pod.metadata.name)

    ai_analysis = ask_holmes(
        f"Pod崩溃重启,日志:{logs}\n事件:{events}\n请分析根本原因并给出修复建议。"
    )

    alert.add_enrichment([
        MarkdownBlock(f"AI根因分析:\n{ai_analysis}"),
        LogsBlock(logs, "崩溃前最后日志"),
    ])

四、效果数据

指标 优化前 优化后 改善
每日告警量 4,200 630 -85%
每夜On-Call次数 3.7 0.9 -76%
P0响应时间 8min 4min -50%
真实故障漏报 0 0 持平

核心原则:先建分级体系 → 多窗口规则减误报 → 抑制规则消级联噪音 → AI辅助加速根因分析。