Skip to content

Alertmanager 操作文档

对应配置见 部署文档。组件:命名空间 cattle-monitoring-system。 飞书 webhook 保存在交付目录 .secrets.env(勿泄露)。 更新:2026-08-01

1. 日常巡检

bash
export KUBECONFIG=~/.kube/config-122.31

# Alertmanager 集群(2 副本 Running,跨节点)
kubectl -n cattle-monitoring-system get pods -l app.kubernetes.io/name=alertmanager -o wide

# 适配器
kubectl -n cattle-monitoring-system get pods -l app=alertmanager-feishu-adapter

# 当前活动告警(在适配器 Pod 内查询)
AP=$(kubectl -n cattle-monitoring-system get pod -l app=alertmanager-feishu-adapter -o name | head -1)
kubectl -n cattle-monitoring-system exec ${AP#pod/} -- python -c '
import json,urllib.request
for g in json.loads(urllib.request.urlopen("http://alertmanager-operated:9093/api/v2/alerts/groups").read()):
    for a in g["alerts"]:
        print(a["status"]["state"], a["labels"].get("severity"), a["labels"].get("alertname"), a["labels"].get("namespace",""))'

2. 静默(Silence)操作

计划内维护前对相关告警做静默,避免打扰值班群:

bash
# 方式一(推荐):Rancher UI → 监控 → Alertmanager → Silences,图形化创建
# 方式二:API(在适配器 Pod 内执行)
kubectl -n cattle-monitoring-system exec ${AP#pod/} -- python -c '
import json,urllib.request,datetime
now=datetime.datetime.now(datetime.timezone.utc)
s={"matchers":[{"name":"namespace","value":"mysql","isRegex":False}],
   "startsAt":now.strftime("%Y-%m-%dT%H:%M:%SZ"),
   "endsAt":(now+datetime.timedelta(hours=2)).strftime("%Y-%m-%dT%H:%M:%SZ"),
   "createdBy":"ops","comment":"mysql 维护窗口静默 2h"}
r=urllib.request.urlopen(urllib.request.Request("http://alertmanager-operated:9093/api/v2/silences",
  data=json.dumps(s).encode(),headers={"Content-Type":"application/json"}))
print(r.read().decode())'

静默到期自动解除;提前解除在 UI 或 DELETE /api/v2/silence/<id>

3. 配置调整

bash
# 改配置:编辑 alertmanager-values.yaml 后重跑(幂等)
./deploy.sh

# 调整重复频率示例:critical 改 1h
# alertmanager-values.yaml → repeat_interval: 1h → ./deploy.sh

# 更换飞书群机器人
kubectl -n cattle-monitoring-system edit secret alertmanager-feishu   # 更新 webhook-url(base64)
kubectl -n cattle-monitoring-system rollout restart deploy/alertmanager-feishu-adapter

4. 告警消息规范(当前格式)

🔥【告警触发】/ ✅【告警恢复】
━━━━━━━━━━━━━━━
🔴 KubePodCrashLooping(critical)触发于 08-01 14:30
命名空间: mysql  实例: 10.22.250.147
摘要: Pod mysql/mysql-primary-0 反复重启
详情: 容器 mysql 在过去 15 分钟重启 5 次…

图标:🔴 critical / 🟠 warning / 🔵 info。收到后处理流程: 看摘要定位 → 按标签(namespace/pod/node)查现场 → 修复 → 等 ✅ 恢复消息闭环。

5. 与 K8sGPT 的分工

Alertmanager + 飞书K8sGPT + 飞书
触发PromQL 规则(阈值/状态)集群异常扫描器
时效秒级10 分钟级
内容什么指标异常为什么异常、怎么修(AI 诊断)
消息头🔥/✅ 告警卡片 + 🤖 AI 值班初判🔍

两者互补不重复;同一故障可能先后收到两类消息,属正常。

5.1 AI 值班初判(critical 告警自动附初步分析)

firing + critical 告警后约 10s,群里会在告警卡片后收到一张「🤖 AI 值班初判」卡片: 自动收集的上下文(Pod 状态/近期事件)+ AI 给出的可能原因/排查命令/建议处置。

bash
# 查看 AI 初判日志(含冷却跳过、失败原因)
kubectl -n cattle-monitoring-system logs deploy/alertmanager-feishu-adapter | grep 'AI'

# 调整触发级别/冷却时间(改 Deployment env 后重启)
kubectl -n cattle-monitoring-system set env deploy/alertmanager-feishu-adapter \
  AI_ANALYZE_SEV=critical,warning AI_ANALYZE_COOLDOWN=3600

# 更换/停用 AI 初判:删除密钥即自动降级为仅告警卡片
kubectl -n cattle-monitoring-system delete secret alertmanager-ai
kubectl -n cattle-monitoring-system rollout restart deploy/alertmanager-feishu-adapter

6. 常见问题

现象原因处理
飞书收不到告警适配器异常 / webhook 失效 / 告警被静默或抑制查适配器日志 kubectl -n cattle-monitoring-system logs deploy/alertmanager-feishu-adapter(含收包摘要与飞书响应);./deploy.sh check 发测试告警分段定位;查 Silences
飞书消息内容异常/为空真实报文字段与预期不符看适配器日志 recv 的实际报文;适配器对缺 alerts/缺 annotations 有原始报文兜底,消息不会为空
同一告警反复刷屏repeat_interval 太短 / 分组键过细调大 repeat_interval;检查 group_by
告警只恢复不触发(或反之)send_resolved 配置确认 receiver 下 send_resolved: true
改 values 不生效secret 的 lookup 保护确认 values 含 alertmanager.secret.recreateIfExists: true
只有一个 Alertmanager副本被改回 1kubectl get alertmanager -n cattle-monitoring-system -o jsonpath='{.items[0].spec.replicas}',重跑 deploy.sh
飞书报 19056机器人设了关键词校验,消息不含关键词飞书机器人设置加关键词 "告警",或调整适配器消息头
有告警卡片但无 AI 初判告警非 critical / 2h 冷却中 / AI Key 未配或失效看适配器日志 AI 初判跳过/失败 行;检查 Secret alertmanager-ai 与 DashScope 额度
AI 初判无上下文告警标签缺 namespace/pod(如节点级告警)正常兜底(会尝试 node 条件);检查适配器 SA 权限 kubectl auth can-i list pods --as=system:serviceaccount:cattle-monitoring-system:alertmanager-feishu-adapter
Rancher 升级后配置丢失Rancher 重渲染 monitoring values重跑 ./deploy.sh(幂等)

7. 恢复默认(回滚)

bash
# 通知改回 null(保留 2 副本)
kubectl -n cattle-monitoring-system edit alertmanager rancher-monitoring-alertmanager  # 不推荐手改

# 标准回滚:helm 回滚到上一 revision
helm history rancher-monitoring -n cattle-monitoring-system
helm rollback rancher-monitoring <REVISION> -n cattle-monitoring-system

# 删除适配器
kubectl delete -f feishu-adapter.yaml