告警规则
alerting rules、Alertmanager 概念。
30 分钟
告警规则
看板适合人盯屏;告警 在指标越界时主动通知。Prometheus 评估 rules 文件,触发后交给 Alertmanager 去重、分组、路由到 Slack / 邮件等。
学习目标
- 编写
groups/rules告警表达式 - 理解
for持续时间避免抖动 - 知道 Alertmanager 在 ops lab 中的位置(概念)
核心内容
rules 文件示例
alert_rules.yml:
groups:
- name: coderoadmap-backend
rules:
- alert: BackendDown
expr: up{job="coderoadmap-backend"} == 0
for: 2m
labels:
severity: critical
annotations:
summary: "backend 抓取失败"
description: "job {{ $labels.job }} instance {{ $labels.instance }} 已 DOWN 超过 2 分钟"
- alert: HighErrorRate
expr: |
sum(rate(http_server_requests_seconds_count{status=~"5.."}[5m]))
/
sum(rate(http_server_requests_seconds_count[5m]))
> 0.05
for: 5m
labels:
severity: warning
annotations:
summary: "HTTP 5xx 比例 > 5%"
挂载到 Prometheus
rule_files:
- /etc/prometheus/alert_rules.yml
alerting:
alertmanager_configs:
- static_configs:
- targets: ["alertmanager:9093"]
Prometheus UI → Alerts 页查看 Pending / Firing 状态。
设计原则
- 告警要少而准:每个告警应有明确处置动作
for防抖:瞬时尖刺不半夜叫人- labels 统一:
severity、team便于 Alertmanager 路由 - runbook 链接:写在
annotations里指向内部文档
K8s 生产常把 rules 放进 Helm Chart,与 helm-gitops-essentials GitOps 一并版本化。
练习
- 停 backend 2 分钟,确认
BackendDown变为 Firing - 故意调低
HighErrorRate阈值触发一次测试告警 - 列出你会加但本课未写的第 4 条告警(如磁盘、DB 连接池)
小结
PromQL 表达式 + for 持续时间 = 告警规则;Alertmanager 负责通知路由。 下一课看 K8s 里 Prometheus Operator 与 ServiceMonitor。