alertmanager钉钉报警之@我

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://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的路由配置说明可以参考这文档: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)日志默认是没有的,我现在启动是直接放前台观察的

。。。

  不过都算开了个好头,想想还是颇高兴的呢~~ 后续可以大做文章,为所欲为,哈哈哈哈~~~~   ^__^

posted @ 2021-02-20 22:58  windysai  阅读(1482)  评论(0编辑  收藏  举报