找了一圈网上没有针对于 Zabbix 7.4 版本的钉钉告警教程,于是手搓了一下,如有错误还望海涵。
钉钉侧的准备
钉钉需要先建立一个群,无所谓群类型,然后添加机器人:

添加后你会获得一个带有access_token的webhook链接。这里安全校验不建议采用“加签”方式,主要是我菜,加密这块一直没搞定,我这里因为服务器出口IP相对固定所以采用指定出口IP的方式做验证。
Zabbix配置
配置告警媒介
转到Zabbix管理页面,找到左侧告警->媒介,右上角“创建媒介类型”。
- 名称:随便填写
- 类型:选择
Webhook - 参数:
- Message:
{ALERT.MESSAGE} - Subject:
{ALERT.SUBJECT} - URL:
https://oapi.dingtalk.com/robot/send?access_token=xxx
- Message:
- 超时:30s
脚本:
1 | // Dingtalk Alert Script v2.2 |
接下来选择“消息模板”选项卡,添加两个消息模板:
消息模板可以随意写,可以调用各种现成的宏。此处不必完全复制我的。
消息模板支持Markdown,但仅支持部分特性,例如表格、代码块、删除线、复杂嵌套、HTML元素等均不支持。
换行使用\n或者\n\n。
- 消息类型:问题
- 主题:
{HOST.NAME}产生告警 - 消息:
{HOST.NAME}(IP地址:{HOST.IP})于 {EVENT.DATE} {EVENT.TIME} 发生{EVENT.NAME}(ID:{EVENT.ID}),请予关注。
- 主题:
- 消息类型:问题恢复
- 主题:
{HOST.NAME}告警恢复 - 消息:
{HOST.NAME}(IP地址:{HOST.IP} )于 {EVENT.DATE} {EVENT.TIME} 发生的{EVENT.NAME}(ID:{EVENT.ID})已于{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}恢复正常,持续时长{EVENT.DURATION}。
- 主题:
媒介类型配置至此结束,可以进行测试验证配置:

显示测试成功后应能在钉钉中查看到消息:

绑定用户
转到Zabbix管理页面,找到左侧用户->用户,进入需要配置通知的用户。
Zabbix设计上是给“用户”的属性(例如邮件、电话号码等)发送通知,但我们这里相当于是以机器人方式发送,所以绑定用户这一步显得很多余但其实是必须的。
选择“报警媒介”->“添加”,类型选择刚才创建的告警媒介;收件人随意填写;“当启用时”选择为启用时间(例如1-7,08:00-18:00则为周一至周日每日早8点至晚6点);严重性按实际情况选择;勾选“启用”。

配置触发器动作
转到Zabbix管理页面,找到左侧告警->动作->触发器动作,右上角“创建动作”。
- 名称:随意填写
- 计算方式:如果很简单的话就选择现成的和、或等条件,很复杂就选自定义表达式自己写
- 条件:选择什么时候触发告警
- 已启用:勾选

例如我这里的计算方式就是事件内容包含LinkDown或主机离线,且不属于选中主机,则适用通知。
切换到“操作”选项卡,添加操作和恢复操作即可。

至此配置完毕,可以进入测试。
测试
我这里监控的主机有几台交换机,已知端口Down会产生告警,于是我这里手动将端口Down掉查看告警的通知情况。
1 | <H3C>sys |
观察到Zabbix上产生告警:

观察到正确产生告警:

随后启用端口:
1 | [H3C-GigabitEthernet1/0/20]no shutdown |
观察到正确收到恢复通知,测试完成。


