夜莺监控 v8 从 beta7 版本开始抽象出新版通知规则。新版通知规则的核心变化是:告警规则只负责产生告警事件,通知规则负责决定这些事件发给谁、用什么媒介发、用什么模板发。
对新版通知规则还不太了解的用户,可以先阅读《夜莺监控巨大革新:抽象出通知规则,增强告警通知的灵活性》。本文以钉钉通知为例,介绍如何使用新版通知规则对接钉钉机器人。
核心要点
- 告警规则需要关联通知规则,告警事件才会进入后续通知分发链路。
- 钉钉通知规则需要配置 Dingtalk 通知媒介、消息模板、Access Token、Bot Name 和适用条件。
- 钉钉机器人建议使用关键字校验,本文示例关键字填写
20。 - 消息模板中的
domain变量必须改成自己的夜莺访问地址,否则消息里的按钮可能无法正确跳转。 - Dingtalk 通知媒介底部的请求体决定最终发给钉钉机器人的 JSON 格式。
通知链路说明

上图是通知规则对接钉钉通知的示意逻辑图,可以按三层理解:
- 在告警规则中配置查询语句做阈值判定,同时关联一个通知规则。这个告警规则生成的所有告警,都会交由该通知规则进行分发。
- 通知规则可以把不同告警发给不同通知媒介。例如 Critical 告警打电话和发短信,Warning 告警发邮件。本文演示钉钉告警,会把交由这个通知规则的所有告警事件发送到钉钉群。
- 发钉钉消息时,需要指定消息模板和 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 模板渲染在一起,再把结果放入钉钉机器人的请求体。
第五步:查看最终效果

收到钉钉消息后,建议检查三件事:
- 告警标题和正文是否符合预期。
- 钉钉机器人是否因为安全校验、Token 错误等原因拒绝消息。
- “事件详情”“屏蔽 1 小时”“查询曲线”等按钮是否能跳转到正确的夜莺页面。
常见问题
Q1:通知规则配置了钉钉,为什么收不到消息? A:先确认告警规则是否关联了这条通知规则,再检查通知规则的适用级别、适用时段、标签和属性过滤条件。然后检查钉钉机器人的 Access Token 和关键字校验是否正确。
Q2:钉钉消息能收到,但按钮不能用怎么办?
A:优先检查 dingtalk 消息模板中的 domain 变量。它需要配置为用户能访问的夜莺地址。
Q3:Dingtalk 通知媒介为什么要配置请求体? A:请求体决定夜莺发送给钉钉机器人的消息格式。本文示例使用 markdown 消息,并把消息标题和正文交给模板变量渲染。
总结
夜莺 v8 新版通知规则对接钉钉的关键路径是:告警规则关联通知规则,通知规则配置 Dingtalk 媒介和 Access Token,消息模板设置正确的 domain,通知媒介请求体使用钉钉 markdown 格式。配置完成后,务必用真实告警或通知测试验证消息内容和跳转按钮。