alertmanager钉钉报警之@我
一、前言
首先说下为什么会折腾自己搞钉钉报警,还要专门@我。原因有以下几点:
(1)线上部署了好几个prometheus+grafana的监控系统,报警是有的,grafana自带的(如下图), 我想群上的人,包括作为运维的我,连看的欲望都木有= =(心底话,自己都过不了自己的审美的),想改良它!!!
(2)监控群上很多人,很多业务交流/开发技术研讨,我是不太需要关心的,所以我平时一般设置免扰模式。如何快速甄选我关心的消息? ——》 @我咯
(3)源于之前的一个需求(还没搞完):监控计划任务进程存活
(4)深入学习alertmanager(配置很灵活,方便,好处多多,只会越来越普及)+ 满足好奇心
二、问题探索
第一次弄的时候参考的链接:
部署起来很成功,但是@不到人。效果不尽如人意。。。放弃
解压目录结构如下,倒是挺简单的:
然后各种查,谷歌翻了好几页终于找到这个: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
实践证明,不管编不编译都能用!!!(一开始以为@不了我,是因为我没有编译= =)
编译安装请参考:
不编译直接来(我特意把上面的编译环境干掉来证明这样是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://soulchild.cn/2168.html
注意: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的路由配置说明可以参考这文档:
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)日志默认是没有的,我现在启动是直接放前台观察的
。。。
不过都算开了个好头,想想还是颇高兴的呢~~ 后续可以大做文章,为所欲为,哈哈哈哈~~~~ ^__^