夜莺监控 v8.0 新版通知规则 | 对接钉钉告警

介绍夜莺监控 v8 新版通知规则如何对接钉钉机器人,包括告警规则关联、通知规则配置、Dingtalk 通知媒介、消息模板 domain 和请求体设置。

作者 Product Team @快猫星云

夜莺监控 v8 从 beta7 版本开始抽象出新版通知规则。新版通知规则的核心变化是:告警规则只负责产生告警事件,通知规则负责决定这些事件发给谁、用什么媒介发、用什么模板发。

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

核心要点

  • 告警规则需要关联通知规则,告警事件才会进入后续通知分发链路。
  • 钉钉通知规则需要配置 Dingtalk 通知媒介、消息模板、Access Token、Bot Name 和适用条件。
  • 钉钉机器人建议使用关键字校验,本文示例关键字填写 20
  • 消息模板中的 domain 变量必须改成自己的夜莺访问地址,否则消息里的按钮可能无法正确跳转。
  • Dingtalk 通知媒介底部的请求体决定最终发给钉钉机器人的 JSON 格式。

通知链路说明

夜莺通知规则-钉钉通知

上图是通知规则对接钉钉通知的示意逻辑图,可以按三层理解:

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

第一步:告警规则关联通知规则

夜莺告警规则

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

关联完成后,这条告警规则触发的事件不会直接写死发送到某个渠道,而是交给“测试通知规则”判断后续怎么发。

第二步:配置通知规则

夜莺通知规则

通知规则页面中,关键配置如下:

配置项 作用 示例说明
授权团队 指定这个通知规则属于哪个团队 团队内成员可以管理该通知规则
通知媒介 指定发送渠道 本文选择 Dingtalk
消息模板 指定告警内容模板 本文选择内置的 dingtalk 模板
Access Token 钉钉机器人的访问 Token 从钉钉机器人 Webhook 地址中获取
Bot Name 钉钉机器人名称 随便填写,主要用于帮助识别 Token
适用级别 哪些告警级别使用该媒介 测试时可全选,生产环境按分级策略选择
适用时段、使用标签、适用属性 通知过滤条件 不填写表示不过滤,所有事件都发给钉钉

创建钉钉机器人时,本文示例选择关键字校验,关键字填写 20。因为告警消息通常带有时间,比如 2025-03-07,其中包含 20,可以通过关键字校验。

一个通知规则可以创建多个通知媒介。后续可以继续添加短信、电话、飞书、企微等媒介,并用适用条件控制分发。

第三步:修改消息模板

夜莺钉钉消息模板

消息模板只需要重点改一个地方:domain 变量。

domain 改成你自己的夜莺访问地址。改好之后,钉钉消息里的“事件详情”“屏蔽 1 小时”“查询曲线”等按钮才能跳转到正确页面。

如果这里没有改,钉钉消息仍然可能正常发送,但按钮会跳到错误地址,影响值班人员处理告警。

第四步:检查通知媒介请求体

修改钉钉通知媒介配置:

夜莺通知媒介

拉到页面最下面,检查请求体:

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

这个请求体就是最终发给钉钉机器人的 JSON。这里使用了两个模板变量:

  • {{$tpl.title}}:告警消息标题。
  • {{$tpl.content}}:告警消息正文。

这两个变量来自前面选择的 dingtalk 消息模板。夜莺会使用 Go template 的渲染方法,把告警事件和 dingtalk 模板渲染在一起,再把结果放入钉钉机器人的请求体。

第五步:查看最终效果

夜莺钉钉消息

收到钉钉消息后,建议检查三件事:

  1. 告警标题和正文是否符合预期。
  2. 钉钉机器人是否因为安全校验、Token 错误等原因拒绝消息。
  3. “事件详情”“屏蔽 1 小时”“查询曲线”等按钮是否能跳转到正确的夜莺页面。

常见问题

Q1:通知规则配置了钉钉,为什么收不到消息? A:先确认告警规则是否关联了这条通知规则,再检查通知规则的适用级别、适用时段、标签和属性过滤条件。然后检查钉钉机器人的 Access Token 和关键字校验是否正确。

Q2:钉钉消息能收到,但按钮不能用怎么办? A:优先检查 dingtalk 消息模板中的 domain 变量。它需要配置为用户能访问的夜莺地址。

Q3:Dingtalk 通知媒介为什么要配置请求体? A:请求体决定夜莺发送给钉钉机器人的消息格式。本文示例使用 markdown 消息,并把消息标题和正文交给模板变量渲染。

总结

夜莺 v8 新版通知规则对接钉钉的关键路径是:告警规则关联通知规则,通知规则配置 Dingtalk 媒介和 Access Token,消息模板设置正确的 domain,通知媒介请求体使用钉钉 markdown 格式。配置完成后,务必用真实告警或通知测试验证消息内容和跳转按钮。

延伸路径

继续看解决方案和产品对比

如果你正在做监控、可观测性或故障定位相关选型,建议从解决方案和产品对比继续往下看。

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云