Lxn-Chan!

(~ ̄▽ ̄)→))* ̄▽ ̄*)o

找了一圈网上没有针对于 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
  • 超时:30s

脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// Dingtalk Alert Script v2.2
// by LxnChan(https://lxnchan.cn)
// 2025.12.23 Tianjin
try {
var params = JSON.parse(value),
req = new HttpRequest(),
data,
response,
respJson,
url = params.URL;

req.addHeader('Content-Type: application/json');

data = {
msgtype: "markdown",
markdown: {
title: params.Subject,
text: "## " + params.Subject + "\n\n" + params.Message + "\n\n> DingTalk Alert by [LxnChan](https://lxnchan.cn)"
}
};

response = req.post(url, JSON.stringify(data));

if (req.getStatus() !== 200) {
throw 'HTTP Status: ' + req.getStatus() + '\nResponse: ' + response;
}

try {
respJson = JSON.parse(response);
if (respJson.errcode && respJson.errcode !== 0) {
throw 'DingTalk Error: errcode=' + respJson.errcode + ', errmsg=' + respJson.errmsg;
}
} catch (e) {
Zabbix.log(4, '[DingTalk Webhook] Non-JSON response: ' + response);
}

return 'OK';
} catch (error) {
Zabbix.log(4, '[DingTalk Webhook] Sending failed: ' + error);
throw 'Sending failed: ' + error;
}

接下来选择“消息模板”选项卡,添加两个消息模板:

消息模板可以随意写,可以调用各种现成的宏。此处不必完全复制我的。

消息模板支持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
2
3
4
5
6
<H3C>sys
System View: return to User View with Ctrl+Z.
[H3C]int GE1/0/20
[H3C-GigabitEthernet1/0/20]shutdown
[H3C-GigabitEthernet1/0/20]dis int brief down | inc GE1/0/20
GE1/0/20 ADM Administratively

观察到Zabbix上产生告警:

观察到正确产生告警:

随后启用端口:

1
[H3C-GigabitEthernet1/0/20]no shutdown

观察到正确收到恢复通知,测试完成。

 简单说两句



联系站长 | 服务状态 | 友情链接

备案号:辽ICP备19013963号

津公网安备12011602300394号

中国互联网违法和不良信息举报中心

架构版本号:8.1.8 | 本站已全面支持IPv6

正在载入运行数据(1/2)请稍后...
正在载入运行数据(2/2)请稍后...

O to die advancing on!

Copyright 2024 LingXuanNing, All rights reserved.