有了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

最后看看钉钉能不能正常收到消息,这里配置了域名告警,测试后能通过验证,安装配置完成。

Q.E.D.