有了Prometheus监控之后,我们能够很直观的看出各服务器和服务的监控项状态。但光是这样不够的,因为我们不可能随时都去盯着面板看。因此就需要用到告警功能。
因为最常用工作软件是钉钉,因此我采用的方式就是通过钉钉告警的方式来发送告警信息(邮件和微信的告警这里就不做介绍了)。因为Prometheus本身的告警插件并不支持钉钉告警,因此还需要用到另一个钉钉告警插件。
本次介绍需要安装的插件有两个:一个是webhook-dingtalk钉钉告警插件,一个是prometheus-alertmanager告警插件。
1.配置webhook-dingtalk钉钉告警插件
首先下载GitHub的插件到服务器上
wget https://github.com/timonwong/prometheus-webhook-dingtalk/releases/download/v2.1.0/prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz
然后修改config.yml的告警信息:
### Targets, previously was known as "profiles"
targets:
suk1da:
url: https://oapi.dingtalk.com/robot/send?access_token=xxxx
# # secret for signature
启动钉钉告警插件:
nohup ./prometheus-webhook-dingtalk --config.file=/export/servers/prometheus-webhook-dingtalk/config.yml --web.enable-lifecycle &
之后有什么修改可以通过热加载的方式更新配置,这样就可以做到不用重启程序就更新配置。
curl -XPOST http://localhost:8060/-/reload
2.设置prometheus-alertmanager
因为Prometheus用Docker方式安装运行的,因此为了统一prometheus-alertmanager也同样用Docker方式安装。
首先配置alertmanager.yml
global:
resolve_timeout: 5m
route:
receiver: suk1da
group_wait: 30s
group_interval: 5m
repeat_interval: 5m
group_by: [alertname]
routes:
- receiver: suk1da
group_wait: 10s
receivers:
- name: suk1da
webhook_configs:
- url: http://IP:8060/dingtalk/suk1da/send
send_resolved: true
启动命令为:
sudo docker run -d --name alertmanager -p 9093:9093 -v /export/servers/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml -v /etc/localtime:/etc/localtime prom/alertmanager
最后看看钉钉能不能正常收到消息,这里配置了域名告警,测试后能通过验证,安装配置完成。