python dingtalk钉钉群告警消息发布

liwenchao1995 / 2023-05-05 / 原文

目录
  • python dingtalk钉钉群告警消息发布
    • 机器人创建
    • Dingtalk简介
    • 钉钉告警消息通知脚本
    • 效果展示

python dingtalk钉钉群告警消息发布

公司用oprator部署的prometheus,理论上时可以直接通过alertmanager的配置。通过钉钉机器人的webhook向群里发送告警信息。但是想要格式化输出格式,并且规范化就成了问题。因为每个人都有部署exporter的权限,我不能保证每个exporter下面的desc都能跟我想要的格式一样,所以我需要重新整理每个告警信息,根据告警信息规范,格式化输出告警信息

机器人创建

钉钉群机器人创建可以有三种安全设置,我这里选择了IP限制,只让我置顶的IP给我的钉钉发送告警信息
image
也可以选择加签和自定义关键词,不过下面脚本需要修改

image

Dingtalk简介

我们可以通过webhook直接向群发起消息,但是对于一些比较复杂的场景,比如格式化输出,投票选择,发送图片处理就稍微有些麻烦,这里可以采用Dingtalk,它的原理其实就是对钉钉的消息格式做了下封装,方便我们去使用发送各种消息,这里我用python写的脚本,所以在github上找了一个python对应的Dingtalk github地址
我也fork了这位作者一份到我的github,在此给作者点个赞,详细使用说明可以看到基本,下面是我的脚本

钉钉告警消息通知脚本

我的思路是先向alert发起请求,获取到json后处理,把告警信息保存到我自己创建的数组或者字典里,再for循环处理,否则直接处理json会造成不必要的资源损耗。再追加生成新的告警信息,发送到钉钉群。


上面脚本还有些瑕疵,比如告警级别我没获取直接写死了,后面有时间会再优化

效果展示

image