0.什么是Alertmanager
Prometheus中的Alertmanager是一个独立的服务,用于处理来自Prometheus服务器的报警信息并根据预定义的规则对其进行聚合和路由。
Alertmanager可以将报警转发给不同的接收者,例如电子邮件地址、Slack频道、PagerDuty、微信、钉钉等,并支持对报警通知进行重复发送和静音设置。
Alertmanager还提供了一个Web界面,用于查看和管理报警规则和接收者配置。
简而言之,Alertmanager是一个非常重要的组件,它确保了Prometheus监控的稳定性和可靠性。
使用alertmanager有以下好处:
- 集中控制:alertmanager可以集中管理和控制各种警报,并统一向团队发送警报,而不是让每个系统独立地处理它们。
- 可扩展性:alertmanager可扩展到数千个警报规则,以适应大型团队和系统的警报需求。
- 灵活性:alertmanager通过多维度的筛选,可以为每个团队或系统定制警报规则,并仅在需要时发送警报。
- 集成性:alertmanager可以与多种监控系统集成,如Prometheus、InfluxDB、Nagios等。
- 可靠性:alertmanager提供了高可用性配置和故障转移支持,保证了警报系统的稳定性和可靠性。
1.安装Alertmanager
这部分内容在三个节点上都要执行
- 下载安装包,将安装包解压至
/data
目录下
wget https://github.com/prometheus/alertmanager/releases/download/v0.25.0/alertmanager-0.25.0.linux-amd64.tar.gz mkdir /data tar -xf alertmanager-0.25.0.linux-amd64.tar.gz -C /data ln -s /data/alertmanager-0.25.0.linux-amd64/ /data/alertmanager
2.配置启动文件
- alert-01配置:
vi /usr/lib/systemd/system/alertmanager.service
[Unit] Description=Prometheus Alertmanager Service daemon After=network.target [Service] Type=simple User=root Group=root ExecStart=/data/alertmanager/alertmanager\ --config.file=/data/alertmanager/alertmanager.yml\ --storage.path=/data/alertmanager/data/\ --data.retention=120h\ --web.external-url=http://192.168.10.3:9093\ --web.listen-address=:9093 \ --cluster.listen-address=192.168.10.3:9094 \ --cluster.advertise-address=192.168.10.3:9094 Restart=on-failure [Install] WantedBy=multi-user.target
systemctl daemon-reload systemctl start alertmanager.service systemctl enable alertmanager.service systemctl status alertmanager.service
alert-02配置
vi /usr/lib/systemd/system/alertmanager.service
[Unit] Description=Prometheus Alertmanager Service daemon After=network.target [Service] Type=simple User=root Group=root ExecStart=/data/alertmanager/alertmanager\ --config.file=/data/alertmanager/alertmanager.yml\ --storage.path=/data/alertmanager/data/\ --data.retention=120h\ --web.external-url=http://192.168.10.4:9093\ --web.listen-address=:9093 \ --cluster.listen-address=192.168.10.4:9094 \ --cluster.peer=192.168.10.3:9094 \ --cluster.advertise-address=192.168.10.4:9094 Restart=on-failure [Install] WantedBy=multi-user.target
systemctl daemon-reload systemctl start alertmanager.service systemctl enable alertmanager.service systemctl status alertmanager.service
alert-03配置
vi /usr/lib/systemd/system/alertmanager.service
[Unit] Description=Prometheus Alertmanager Service daemon After=network.target [Service] Type=simple User=root Group=root ExecStart=/data/alertmanager/alertmanager\ --config.file=/data/alertmanager/alertmanager.yml\ --storage.path=/data/alertmanager/data/\ --data.retention=120h\ --web.external-url=http://192.168.10.5:9093\ --web.listen-address=:9093 \ --cluster.listen-address=192.168.10.5:9094 \ --cluster.peer=192.168.10.3:9094 \ --cluster.advertise-address=192.168.10.5:9094 Restart=on-failure [Install] WantedBy=multi-user.target
systemctl daemon-reload systemctl start alertmanager.service systemctl enable alertmanager.service systemctl status alertmanager.service
3.验证集群
- 集群任意节点IP通过浏览器访问查看集群状态
当某节点挂了,还由其他节点可使用
4.关于集群的配置项
# 当前实例集群服务监听地址,为空则禁用高可用功能 --cluster.listen-address="0.0.0.0:9094" # 表示集群节点对其他节点发布的地址,其他节点可以用这个地址与该地址通信 --cluster.advertise-address=CLUSTER.ADVERTISE-ADDRESS # 用来设置该 Alertmanager 节点的集群对等体,将告警数据同步其他节点 --cluster.peer=CLUSTER.PEER # 对等超时时间,默认15秒 --cluster.peer-timeout=15s # 集群消息传播时间,默认200ms --cluster.gossip-interval=200ms # 定义了多个 Alertmanager 实例之间的信息同步频率 --cluster.pushpull-interval=10ms # 评估通知之前等待集群连接建立的最长时间 --cluster.tcp-timeout=10s # 在标记节点不正常之前等待确认的时间 --cluster.probe-timeout=500ms # 随机节点探测之间的间隔 --cluster.probe-interval=1s # 用来设置集群状态稳定的超时时间的参数 --cluster.settle-timeout=10ms # 尝试重新连接到丢失的对等设备之间的间隔时间 --cluster.reconnect-interval=10s # 尝试重新连接到丢失的对等设备的间隔时间 --cluster.reconnect-timeout=6h0m0s # 用于在 Alertmanager 集群模式中配置 TLS 证书 --cluster.tls-config="" # 允许节点发送不加密的广播请求,从而允许其他节点发现它的地址。 # 这条最好不用 --cluster.allow-insecure-public-advertise-address-discovery