共计 3419 个字符,预计需要花费 9 分钟才能阅读完成。
一、AlertManager 集群搭建
1、背景
单节点的告警管理器,如果宕机了,那么所有的告警信息都发送不进来,还是比拟危险的,因而咱们须要搭建一个高可用的告警管理器。
此处,记录一下搭建 3 个节点的 alertmanager 集群。
2、机器
机器 | 集群端口 | web 页面端口 |
---|---|---|
127.0.0.1 | 9083 | 9082 |
127.0.0.1 | 9085 | 9084 |
127.0.0.1 | 9087 | 9086 |
3、集群可用配置
To create a highly available cluster of the Alertmanager the instances need to be configured to communicate with each other. This is configured using the
--cluster.*
flags.
--cluster.listen-address
string: cluster listen address (default “0.0.0.0:9094”; empty string disables HA mode) 集群服务监听的地址--cluster.advertise-address
string: cluster advertise address--cluster.peer
value: initial peers (repeat flag for each additional peer) 初始化时关联其它实例的集群机器地址--cluster.peer-timeout
value: peer timeout period (default “15s”)--cluster.gossip-interval
value: cluster message propagation speed (default “200ms”)--cluster.pushpull-interval
value: lower values will increase convergence speeds at expense of bandwidth (default “1m0s”)--cluster.settle-timeout
value: maximum time to wait for cluster connections to settle before evaluating notifications.--cluster.tcp-timeout
value: timeout value for tcp connections, reads and writes (default “10s”)--cluster.probe-timeout
value: time to wait for ack before marking node unhealthy (default “500ms”)--cluster.probe-interval
value: interval between random node probes (default “1s”)--cluster.reconnect-interval
value: interval between attempting to reconnect to lost peers (default “10s”)--cluster.reconnect-timeout
value: length of time to attempt to reconnect to a lost peer (default: “6h0m0s”)The chosen port in the
cluster.listen-address
flag is the port that needs to be specified in thecluster.peer
flag of the other peers.The
cluster.advertise-address
flag is required if the instance doesn’t have an IP address that is part of RFC 6890 with a default route.
上方配置,来自 alertmanager
在 github
上的配置。地址:https://github.com/prometheus…
4、alertmanager 启动脚本
1、127.0.0.1:9083 机器启动脚本
nohup /Users/huan/soft/prometheus/alertmanager-0.21.0/alertmanager \
--config.file="/Users/huan/soft/prometheus/alertmanager-0.21.0/alertmanager.yml" \
--web.listen-address="0.0.0.0:9082" \
--data.retention=48h \
--storage.path="/Users/huan/soft/prometheus/alertmanager-0.21.0/data" \
--cluster.listen-address="0.0.0.0:9083" \
--log.level=debug \
> logs/alertmanager.out 2>&1 &
2、127.0.0.1:9085 机器启动脚本
nohup /Users/huan/soft/prometheus/alertmanager-0.21.0/alertmanager \
--config.file="/Users/huan/soft/prometheus/alertmanager-0.21.0/alertmanager.yml" \
--web.listen-address="0.0.0.0:9084" \
--data.retention=48h \
--storage.path="/Users/huan/soft/prometheus/alertmanager-0.21.0/data" \
--cluster.listen-address="0.0.0.0:9085" \
--cluster.peer="127.0.0.1:9083" \
--log.level=debug \
> logs/alertmanager.out 2>&1 &
3、127.0.0.1:9087 机器启动脚本
nohup /Users/huan/soft/prometheus/alertmanager-0.21.0/alertmanager \
--config.file="/Users/huan/soft/prometheus/alertmanager-0.21.0/alertmanager.yml" \
--web.listen-address="0.0.0.0:9086" \
--data.retention=48h \
--storage.path="/Users/huan/soft/prometheus/alertmanager-0.21.0/data9087" \
--cluster.listen-address="0.0.0.0:9087" \
--cluster.peer="127.0.0.1:9083" \
--log.level=debug \
> logs/alertmanager-9087.out 2>&1 &
5、批改 prometheus 配置
prometheus.yml 配置批改
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
- 127.0.0.1:9082
- 127.0.0.1:9084
- 127.0.0.1:9086
6、查看集群状态
到此,alertmanager 的一个集群就搭建实现了。
7、注意事项
1、如果实例没有应用默认路由的 RFC 6890 一部分的 IP 地址,则须要 cluster.advertise-address 标记。
2、如果咱们的告警管理器是在 0.15 及以上的版本,则 TCP 和 UDP 端口都须要能够拜访。
3、不要在 Prometheus 和 AlertManager 之间进行负载平衡,应该将所有的 AlertManager 地址都通知 Prometheus。
4、集群中节点的通信是通过 Gossip
协定来实现的。
8、告警管理器的高可用架构图
二、参考链接
1、RFC 6890
2、alertmanager 集群搭建
3、https://www.bookstack.cn/read/prometheus-book/ha-alertmanager-high-availability.md