运维
运维相关知识和内容
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辅助加速根因分析。