Alertmanager Kubernetes 实践
在 Kubernetes 中,优先使用 Prometheus Operator 或 kube-prometheus-stack 管理 Alertmanager 副本、存储、Secret、配置与服务发现。不要手工修改 Operator 管理的 StatefulSet 或生成 Secret,变更会被控制器覆盖。
1. kube-prometheus-stack
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm upgrade --install monitoring prometheus-community/kube-prometheus-stack \
--namespace monitoring --create-namespace \
--values values-production.yaml
values 文件应声明 Alertmanager 副本、持久卷、资源 requests/limits、反亲和、Ingress、NetworkPolicy、Receiver Secret 和镜像/chart 版本。
2. Alertmanager CR 与配置管理
Alertmanager CR 管理实例规格;AlertmanagerConfig 可按命名空间或团队表达路由片段,具体合并与选择行为取决于 Operator 版本和 selector。发布前在预发检查 Operator 最终渲染的配置,确认没有因标签/Namespace selector 导致路由丢失或重复。
Receiver 密钥放在 Kubernetes Secret,通过受控引用注入。禁止把机器人 Token、SMTP 密码或电话平台凭据写入 Git、Helm values 明文或 ConfigMap。
3. Kubernetes 告警实践
| 对象 | 重点告警 | 处置方向 |
|---|---|---|
| Node | NotReady、磁盘压力、资源饱和 | 节点健康、kubelet、网络、容量 |
| Pod | CrashLoop、频繁重启、Pending、OOM | 日志、资源限制、镜像、调度条件 |
| Deployment | 就绪副本不足 | 发布、探针、依赖、资源与 HPA |
| Namespace | 配额/资源逼近上限 | 团队容量、清理、配额与扩容 |
告警标签至少携带集群、Namespace、工作负载、团队和环境。根因告警优先由平台团队接收,再通过抑制规则减少其产生的下游症状通知。
4. 高可用
生产 Alertmanager 使用多个副本、持久卷和反亲和,集群通信仅在受信网络开放。升级按 StatefulSet/Operator 指南滚动进行,每一步验证 peers、静默、规则触发和通知恢复。