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
浙公網安備 33010602011771號