使用钉钉发送告警通知

1、创建钉钉机器人

首先创建一个钉钉群,然后进入群设置,找到智能群助手,点击【添加机器人】,找到【自定义】,如图:

钉钉告警 - 图1

进入自定义机器人页面,点击添加,给机器人取个名字,其次就是安全设置,这是钉钉新加的功能,老版本钉钉无需安全设置的,有三种安全设置方法,这里我们选择自定义关键字的方式:

钉钉告警 - 图2

自定义关键字里写“20”,啥意思呢?就是说,这个钉钉机器人提供了一个webhook url地址,夜莺发消息的时候就调用这个url,但是,钉钉为了安全考虑,不能让发送方随随便便就发送,自定义了一个关键字“20”,这就需要夜莺发给钉钉的消息每次都必须带上“20”这个关键字,否则钉钉就拒收了。

为啥使用“20”作为关键字呢?因为告警消息里一定会有日期,比如 2020-09-09 12:12:12 年份里必然带有“20”这个字符串,所以,正常的告警消息一定是可以通过校验认证的。

💡目前夜莺不支持其他的钉钉认证方式,只能选择关键字认证方式

点击完成,出现一个webhook的地址,复制出来,长这样:

  1. https://oapi.dingtalk.com/robot/send?access_token=ce372d0514090a8c6ce22df82354b6aec0147fe467e91fe78dc43cacd77809dc

这个webhook的url中带有一个参数access_token,就是如下部分:

  1. ce372d0514090a8c6ce22df82354b6aec0147fe467e91fe78dc43cacd77809dc

把这个access_token记录下来,后面有用。

2、在夜莺里创建机器人账号

在用户管理页面,以管理员身份创建一个用户,把刚才记录的token填入更多联系方式中的Dingtalk Robot Token中,如下:

钉钉告警 - 图3

创建完了这个用户之后,未来发给这个用户的所有的告警,都会通过钉钉群里的机器人发到群里。

3、在夜莺里创建团队

夜莺v5版本,告警只能发给团队,不能发给个人,所以要想收告警,必须要先有一个团队,比如下面,我们创建了一个test007的团队,而且把刚才创建的dingding_laotie账号添加到了这个团队中了:

钉钉告警 - 图4

后面我们就可以创建告警规则,在告警规则里配置告警接收者,如图所示:

钉钉告警 - 图5

要勾选通知媒介中的dingtalk,告警接收组设置为刚才创建的test007。

如上配置之后,这个告警规则如果触发了告警,就会发给test007,test007里有2个user,一个是dingding_laotie,一个是root,夜莺发送告警消息的时候,就会获取dingding_laotie和root的联系信息,根据联系信息做发送。

dingding_laotie这个账号配置了钉钉机器人token,root账号只配置了邮箱和手机号,没有配置钉钉机器人的token,当夜莺发钉钉告警的时候,就是发给dingding_laotie账号配置的那个token,钉钉消息是有at人的功能的,设置at指令的时候是根据手机号来at的,所以夜莺看到这个test007团队成员中有人有手机号(root账号有配置手机号),就把手机号拿出来放到at参数中,所以最终的效果就是机器人发了一个消息,且at了某个人,如果这个手机号对应的那个人恰巧在钉钉群里,就会看到他被at了。

其他告警方式

上面是介绍的钉钉告警,企微、飞书的机器人告警跟钉钉机器人逻辑是类似的,这里不再赘述。如果做的更进一步,我们会希望在飞书、钉钉里通过卡片的形式展示告警消息,并且在飞书、钉钉里直接认领告警、直接可以屏蔽告警,类似下面的效果:

钉钉告警 - 图6

这就需要利用IM平台的自定义应用能力了,搞起来有些麻烦,建议大家使用 FlashDuty 来做这个效果,鼠标点点点即可实现。除了支持卡片视图,FlashDuty还支持告警聚合降噪、排班、认领、升级、协同等功能,真正的一站式OnCall事件中心!👉 点此了解