天天看点

Prometheus +alertmanager配置钉钉告警

近期接到工作任务,需要研究监控告警。

仅以本文记录一下整个实现过程。不足之处,欢迎指出。

因为本公司平时办公需要用到钉钉,所以选择研究一下钉钉告警,以供后期项目使用。

1.下载钉钉pc版,获取钉钉机器人Webhook 地址

手机端无法进行添加机器人的操作,请自行百度下载安装钉钉pc版。

由于机器人是将消息推送到群,需要预先建立好一个群,这里先创建了一个名为“监控报警”的群作为接收消息的群。

Prometheus +alertmanager配置钉钉告警

下面我们开始添加机器人的操作,点击左上角账号名-设置:

Prometheus +alertmanager配置钉钉告警

找到机器人管理栏,点击“前往设置”

Prometheus +alertmanager配置钉钉告警

选择“自定义”:

Prometheus +alertmanager配置钉钉告警

设置机器人的基本信息,这里注意设置好ip地址(白名单),否则无法进行消息发送。这里的ip最初我设置的是服务器内网地址:192.xxx.xxx.xxx。【此处有坑,请看5.错误排查处的处理】

Prometheus +alertmanager配置钉钉告警

记录好下面的Webhook地址。后面修改配置信息的时候需要这个地址。

Prometheus +alertmanager配置钉钉告警

2.钉钉插件的安装和配置

在服务器端安装钉钉插件。

安装命令如下:

(1)下载安装包

wget https://github.com/timonwong/prometheus-webhook-dingtalk/releases/download/v1.4.0/prometheus-webhook-dingtalk-1.4.0.linux-amd64.tar.gz

(2)解压

tar -zxvf prometheus-webhook-dingtalk-1.4.0.linux-amd64.tar.gz -C /usr/local/

(3)重命名

mv prometheus-webhook-dingtalk-1.4.0.linux-amd64 /usr/local/dingtalk/

修改config.yml 文件中的 url 后面的值信息为复制出机器人的Webhook地址,删除消息模板的地址处的注释:

cp config.example.yml config.yml

vim config.yml

Prometheus +alertmanager配置钉钉告警
Prometheus +alertmanager配置钉钉告警

修改消息模板内容:

{{ define “ding.link.title” }}{{ template “legacy.title” . }}{{ end }}

{{ define “ding.link.content” }}

{{ if gt (len .Alerts.Firing) 0 -}}

告警列表:

{{ template “__text_alert_list” .Alerts.Firing }}

{{- end }}

{{ if gt (len .Alerts.Resolved) 0 -}}

恢复列表:

{{ template “__text_resolve_list” .Alerts.Resolved }}

{{- end }}

{{- end }}

Prometheus +alertmanager配置钉钉告警

启动插件并将日志存于dingding.log中:

/usr/local/dingtalk/prometheus-webhook-dingtalk --log.level=info > dingding.log 2>&1 &

检查日志文件,level=info,无level=error的日志信息即可初步判定启动正常:

标记处http://localhost:8060/dingtalk/webhook1/send这个地址在后面alertmanager的配置中会使用。

Prometheus +alertmanager配置钉钉告警

3.alertmanager配置

vim alertmanager.yml

route:

group_by: [‘alertname’]

group_wait: 10s

group_interval: 10s

repeat_interval: 1h

receiver: ‘ops_dingding’ #默认的接收器

#发送钉钉告警

receivers:

  • name: ‘ops_dingding’

    webhook_configs:

    • url: ‘http://192.xxx.xx.xx:8060/dingtalk/webhook1/send’

      send_resolved: true

Prometheus +alertmanager配置钉钉告警

重启alertmanager。

4.查看告警

检查钉钉消息栏。

Prometheus +alertmanager配置钉钉告警

5.错误排查

按以上步骤操作之后,若没有告警信息。

(1)检查prometheus中的告警规则是否有告警,如没有告警,此处不发送消息则为正常,可自己停掉某个节点,模拟一个告警。

(2)检查alertmanager及dingtalk的启动日志是否出现报错。

vim dingding.log

level=error ts=2021-07-13T07:47:15.311Z caller=dingtalk.go:103 component=web target=webhook1 msg=“Failed to send notification to DingTalk” respCode=310000 respMsg=“ip 110.18x.xx.xxx not in whitelist, more: [https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq]”

Prometheus +alertmanager配置钉钉告警

翻译一下:

msg=“向DingTalk发送通知失败”respCode=310000 respMsg=“ip 110.18x.xxx.xxx不在白名单中。

此时很容易联想到,钉钉设置机器人基本信息时添加过ip地址。这时候去检查一下:将日志中提到的ip地址加入到里面即可。

Prometheus +alertmanager配置钉钉告警

继续阅读