Alertmanager 从 v0.21.0 版本开始引入了内置的集群功能,通过 gossip 协议实现多个实例间的状态同步,无需依赖外部共享存储。以下是具体的集群配置方案:

核心配置参数

集群相关的主要启动参数:
  • --cluster.listen-address:集群通信监听地址(如 0.0.0.0:9094
  • --cluster.peer:初始集群节点地址(其他实例的集群地址)
  • --cluster.advertise-address:向集群宣告的地址(默认使用 listen-address)
  • --cluster.gossip-interval:gossip 协议的消息间隔(默认 200ms)

配置步骤

1. 准备相同的 Alertmanager 配置文件

所有实例使用完全一致的 alertmanager.yml(路由、接收者等配置):
global:
  resolve_timeout: 5m

route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1h
  receiver: 'web.hook'
receivers:
- name: 'web.hook'
  webhook_configs:
  - url: 'http://example.com/alert'

2. 启动集群节点

假设部署 3 个节点,分别在 192.168.1.10、192.168.1.11、192.168.1.12 服务器上:
节点 1 启动命令:
./alertmanager \
  --config.file=alertmanager.yml \
  --web.listen-address=0.0.0.0:9093 \
  --cluster.listen-address=0.0.0.0:9094 \
  --cluster.peer=192.168.1.11:9094 \
  --cluster.peer=192.168.1.12:9094

节点 2 启动命令:

./alertmanager \
  --config.file=alertmanager.yml \
  --web.listen-address=0.0.0.0:9093 \
  --cluster.listen-address=0.0.0.0:9094 \
  --cluster.peer=192.168.1.10:9094 \
  --cluster.peer=192.168.1.12:9094

节点 3 启动命令:

./alertmanager \
  --config.file=alertmanager.yml \
  --web.listen-address=0.0.0.0:9093 \
  --cluster.listen-address=0.0.0.0:9094 \
  --cluster.peer=192.168.1.10:9094 \
  --cluster.peer=192.168.1.11:9094

3. Prometheus 配置对接集群

在 Prometheus 配置中添加所有 Alertmanager 节点:
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - 192.168.1.10:9093
      - 192.168.1.11:9093
      - 192.168.1.12:9093

验证集群状态

通过访问任意节点的 /-/healthy 和 /-/ready 端点检查健康状态:
curl http://192.168.1.10:9093/-/healthy
curl http://192.168.1.10:9093/-/ready

  

查看集群成员信息(需要启用 debug 端点):
# 启动时添加 --web.enable-debug-endpoints
curl http://192.168.1.10:9093/debug/cluster

  

 

 posted on 2025-09-10 15:46  boye169  阅读(18)  评论(0)    收藏  举报