首页/云/可观测性速查/Alertmanager 高可用:gossip 集群
告警与响应50 条

Alertmanager 高可用:gossip 集群

多实例组集群,用 gossip(默认 9094)同步静默与通知去重状态;实例间无需共享存储,全部实例同时工作,前面挂负载均衡承接上游推送。

可观测性速查云更新于 2026-10-13

Alertmanager 集群是什么

Alertmanager 的高可用靠 gossip 集群实现:多个实例组成一个集群,通过默认 9094 端口同步静默与通知去重状态,实例之间不需要共享存储。所有实例同时工作,前面挂负载均衡承接 Prometheus 的推送;通知由选主实例统一发出,因此同一条告警不会因为集群里有多个实例而被重复通知。

基本信息

集群端口默认 9094,由 --cluster.listen-address 指定
关键参数--cluster.listen-address、--cluster.peer、--cluster.advertise-address
同步内容静默、通知日志(去重依据)
前置条件集群端口互通,各实例配置版本一致
权限要求进程启动参数与防火墙放行

典型使用场景

  • 消除单点:避免单实例故障期间完全收不到告警
  • 无损升级:滚动重启各实例期间仍有人负责发通知
  • 多机房部署:各机房各放一个实例,就近接收推送
  • 静默共享:任一实例创建的静默在全集群生效
  • 通知去重:同一条告警只发一次,不因多实例而重复打扰

运维要点

  • 各实例配置文件必须整组同步发布,否则通知行为随请求落点漂移
  • 集群端口要在实例之间全通,丢包会造成状态同步延迟甚至集群分裂
  • 负载均衡按请求分发,不要做会话粘滞,避免流量与通知集中在一台
  • 升级时逐台重启,并观察成员是否重新加入集群
  • 用启动日志确认成员列表与状态同步正常,再继续下一台

集群启动参数

集群启动参数
alertmanager \
  --config.file=/etc/alertmanager/alertmanager.yml \
  --storage.path=/var/lib/alertmanager \
  --cluster.listen-address=0.0.0.0:9094 \
  --cluster.peer=am-2.example.com:9094 \
  --cluster.peer=am-3.example.com:9094

# 成员是否互相可见,看启动日志里的集群成员列表
# 验证静默全集群生效:在一台上建静默,去另一台查询

常见问题

现象原因处理方向
通知重复集群端口不通,实例各自为政放通 9094 并确认成员列表
静默只在一台生效gossip 未同步或配置版本不一致先测连通性再统一配置
升级后行为变化滚动过程中配置版本不一致整组同步发布并在维护窗口执行
状态同步慢网络抖动或实例负载过高检查网络质量与实例资源
集群内通知由选主实例统一发出,静默与抑制状态经 gossip 同步,这样既保证同一条告警不会重复打扰,也避免静默只在某一台上生效。

易错点

  • 各实例配置版本不一致时通知行为会随请求落点漂移,配置必须整组同步发布
  • 集群端口未放通时节点各自为政,静默只在创建它的实例上生效,看起来像随机失效
  • 负载均衡做会话粘滞会让通知集中在一台实例上,失去高可用的实际效果
  • 滚动升级时各台配置不同步,升级期间告警路由可能出现不可预期的跳变

数据来源与参考

  • Alertmanager 文档 · High Availability
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌