alertmanager钉钉报警之@我
一、前言
首先说下为什么会折腾自己搞钉钉报警,还要专门@我。原因有以下几点:
(1)线上部署了好几个prometheus+grafana的监控系统,报警是有的,grafana自带的(如下图), 我想群上的人,包括作为运维的我,连看的欲望都木有= =(心底话),想改良它!!!
(2)监控群上一般很多人,他们很多业务交流/开发技术研讨,我是不太需要关心的,所以我平时一般设置免扰模式。如何快速甄选我关心的消息? ——》 @我咯
(3)源于之前的一个需求(还没搞完):监控计划任务进程存活
(4)深入学习alertmanager(配置很灵活,方便,好处多多,只会越来越普及)+ 满足好奇心
二、问题探索
第一次弄的时候参考的链接:https://my.oschina.net/u/4408208/blog/4685334
部署起来很成功,但是@不到人。效果不尽如人意。。。放弃
解压目录结构如下,倒是挺简单的:
然后各种查,谷歌翻了好几页终于找到这个:https://wi1dcard.dev/posts/alertmanager-dingtalk-integration-tips/
照着做,是源于这个github项目的【作者:timonwong】:
https://github.com/timonwong/prometheus-webhook-dingtalk
下载链接:https://github.com/timonwong/prometheus-webhook-dingtalk/releases
实践证明,不管编不编译都能用!!!(一开始以为@不了我,是因为我没有编译= =)
编译安装请参考:https://blog.csdn.net/Buster_ZR/article/details/105848811
不编译直接来(我特意把上面的编译环境干掉来证明这样是ok滴【go、yarn,nodejs等】) ——》 推荐,下面介绍具体实现方法
三、具体实现
感谢:github作者 + 某小伙子有些关键地方的提醒(不然搞崩我= =)
1、下载钉钉插件:prometheus-webhook-dingtalk这个git项目,解压改名
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 3 tar -xvf prometheus-webhook-dingtalk-1.4.0.linux-amd64.tar.gz 4 mv prometheus-webhook-dingtalk-1.4.0.linux-amd64 prometheus-webhook-dingtalk
解压后非常精简:配置文件+二进制可执行程序+模板参考目录(contrib)
2、配置模板文件:/config/example.tmpl
直接抄这个:https://blog.csdn.net/Buster_ZR/article/details/105848811
注意:alertmanager、grafana等链接地址要改成你自己的
3、修改配置文件:
## Request timeout # timeout: 5s ## Customizable templates path templates: - /config/example.tmpl targets: webhook1: &target_base url: https://oapi.dingtalk.com/robot/send?access_token=xxxx message: title: '{{ template "example.title" . }}' text: '{{ template "example.content" . }}' webhook2: <<: *target_base mention: # 此处必须声明 Mention 的号码... mobiles: ["我的电话号码"] message: text: | @我的电话号码 {{ template "example.content" . }}
因为我的机器人webhook是很久以前申请的了, 那会还不需要加签或者告警关键字之类,直接写就好
这文件有个注意点: @电话这里要放出来!!!参考文章没有写清楚
4、确认告警规则文件的标签
查prometheus的配置文件:prometheus.yml 上的 rule_files记下来 severity: warning
5、修改:alertmanager.yml
1 route: 2 group_by: ['severity','alertname'] 3 group_wait: 10s 4 repeat_interval: 1m #重复发报警时间 5 receiver: webhook1 6 routes: 7 - match_re: 8 severity: warning 9 receiver: webhook2 10 11 receivers: 12 - name: 'webhook1' 13 webhook_configs: 14 - &dingtalk_config 15 send_resolved: false 16 url: http://localhost:8060/dingtalk/webhook1/send 17 18 - name: 'webhook2' 19 webhook_configs: 20 - <<: *dingtalk_config 21 url: http://localhost:8060/dingtalk/webhook2/send
match_re 匹配了上面的标签
dingtalk插件默认端口是8060,文章中那个地址是不对的
alertmanager的路由配置说明可以参考这文档:https://blog.csdn.net/weixin_44723434/article/details/104556121
6、启动alertmanager和dingtalk插件
## 启动 alertmanager
1 cd /usr/local/src/monitor/alertmanager 2 ./alertmanager --config.file alertmanager.yml
1 ## 启动 dingtalk插件 2 cd /usr/local/src/monitor/test/prometheus-webhook-dingtalk 3 ./prometheus-webhook-dingtalk --config.file=config.example.yml
最终效果图:
这个东西后续其实还挺多需要改善的地方,比如
(1)告警内容不够直观,可读性不强
(2)日志默认是没有的,我现在启动是直接放前台观察的
。。。
不过都算开了个好头,想想还是颇高兴的呢~~ 后续可以大做文章,为所欲为,哈哈哈哈~~~~ ^__^