对新版本通知规则还不太了解的用户可以阅读文章:《夜莺监控巨大革新:抽象出通知规则,增强告警通知的灵活性》。下面我们将以钉钉通知为例,介绍如何使用新版通知规则来对接钉钉通知。

image.png

上图是通知规则对接钉钉通知的示意逻辑图。

  • 在告警规则中配置查询语句做阈值判定,同时关联一个通知规则,即这个告警规则生成的所有的告警,都交由这个通知规则进行分发。
  • 通知规则可以配置不同的告警发给不同的通知媒介,比如Critical的告警打电话发短信,Warning的告警发邮件。本文演示钉钉告警,会把交由这个通知规则的所有告警事件都发送到钉钉群。
  • 发钉钉消息的时候,可以指定消息模板和 Access Token,不同的团队可以自定义自己的消息模板,不同的 Access Token 即对应不同的钉钉机器人。

下面我们看看各部分是如何配置的。

告警规则

image.png

我提前创建了一个通知规则,叫做“测试通知规则”。上图是告警规则的截图,上图中的告警规则关联了“测试通知规则”这个通知规则。

通知规则

image.png

上图中的关键部分我用红框标注了出来:

  • 授权团队:这个通知规则属于哪个团队,这个团队里的人可以管理这个通知规则。
  • 通知媒介:这里我要测试钉钉通知方式,所以通知媒介选择的 Dingtalk,这个通知媒介已经内置到系统中了,夜莺启动后会自动创建,不过需要稍微改动,待会再说。
  • 消息模板:这里我选择了一个内置的消息模板 dingtalk,dingtalk 这个消息模板也是内置的,需要改,待会再说。
  • Access Token:这个是钉钉机器人的 Access Token,这个需要自己创建一个钉钉机器人,Access Token 从钉钉机器人的 Webhook 地址中获取。另外创建钉钉机器人的时候,要选择关键字校验,关键字填写“20”
  • Bot Name:这个是钉钉机器人的名字,随便填写,不太关键,因为 Token 不好记忆,名字可以帮助记忆。
  • 适用级别:我这里测试是希望把所有级别的告警都发给钉钉,所以适用级别就全选了。
  • 适用时段、使用标签、适用属性,都是过滤条件,每个字段旁边都有个小问号 tooltip,鼠标放上去可以看到说明,这里我都没填,就是不做任何过滤,所有事件都发给钉钉。

一个通知规则可以创建很多个通知媒介,后面你可以自行测试。

消息模板

image.png

消息模板只改动一个地方,就是 domain 变量,改成你自己的夜莺的域名即可。之后钉钉中收到的消息里的那几个按钮(事件详情|屏蔽1小时|查询曲线)就可以用了。

通知媒介

修改钉钉通知媒介的配置:

image.png

只修改一个地方,拉到最下面,请求体:

{"msgtype": "markdown", "markdown": {"title": "{{$tpl.title}}", "text": "{{$tpl.content}}"}}

这个请求体是钉钉机器人的请求体,这里我用了一个模板,模板里有两个变量,{{$tpl.title}}{{$tpl.content}},这两个变量是怎么来的?跟 dingtalk 那个消息模板有关,消息模板里有这两个变量,所以这里可以用。夜莺会使用 go template 的渲染方法,把告警事件和 dingtalk 模板渲染在一起,把结果赋值给 {{$tpl.title}}{{$tpl.content}},最后再把这俩变量放到请求体里,发给钉钉机器人。

最后的效果

image.png

v8.0.0-beta7 这个版本还不是特别完善,不过基本逻辑都有了,下个版本会更完善,支持钉钉 at 人的功能,敬请期待。


SRETALK
20 声望17 粉丝

关注 SRE、可观测性、开源商业化