Zabbix7.4实现钉钉告警-内置(JavaScript)脚本
2025-12-25 / 技术积累 / 26 次围观 / 0 次吐槽 /第一步:获取钉钉机器人 Webhook 地址
进入钉钉群 -> 智能群助手 -> 添加机器人 -> 自定义。
安全设置建议勾选:加签(本脚本支持)或 自定义关键词(如:告警)。
复制生成的
Webhook URL和Secret。
第二步:在 Zabbix 中创建 Webhook
登录 Zabbix,前往 告警 (Alerts) -> 媒介类型 (Media types)。
点击 创建媒介类型 (Create media type)。
名称 (Name):
DingDing Webhook类型 (Type):
Webhook参数 (Parameters):添加以下必需项:
| 参数名 | 值 |
| URL | (粘贴你的钉钉 Webhook 地址) |
| Secret | (粘贴你的加签密钥) |
| Subject | {ALERT.SUBJECT} |
| Message | {ALERT.MESSAGE} |
脚本 (Script):粘贴以下代码:
try {
var params = JSON.parse(value),
req = new HttpRequest(),
data,
response,
sha256,
timestamp = new Date().getTime(),
url = params.URL;
// 处理钉钉加签逻辑
if (params.Secret && params.Secret.length > 0) {
var stringToSign = timestamp + "\n" + params.Secret;
var sign = btoa(Zabbix.hmac('sha256', params.Secret, stringToSign));
url += '×tamp=' + timestamp + '&sign=' + encodeURIComponent(sign);
}
req.addHeader('Content-Type: application/json');
// 组装钉钉 markdown 消息
data = {
msgtype: "markdown",
markdown: {
title: params.Subject,
text: "## " + params.Subject + "\n" + params.Message
}
};
response = req.post(url, JSON.stringify(data));
if (req.getStatus() !== 200) {
throw 'Response code: ' + req.getStatus();
}
return 'OK';
} catch (error) {
Zabbix.log(4, '[DingDing Webhook] Error: ' + error);
throw 'Sending failed: ' + error;
}第三步:设置告警消息内容
在同一页面的 消息模板 (Message templates) 标签页中,添加以下模板以确保钉钉显示美观。
1. 问题 (Problem)
主题:
告警发现: {EVENT.NAME}消息内容:
**告警级别**: {EVENT.SEVERITY}
**告警时间**: {EVENT.DATE} {EVENT.TIME}
**告警主机**: {HOST.NAME}
**告警详情**: {EVENT.NAME}
**当前状态**: {EVENT.VALUE}
**事件 ID**: {EVENT.ID}2. 问题恢复 (Problem recovery)
主题:
告警恢复: {EVENT.NAME}消息内容:
**恢复时间**: {EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
**告警主机**: {HOST.NAME}
**持续时间**: {EVENT.DURATION}
**当前状态**: 已恢复第四步:关联用户与测试
前往 用户 (Users) -> 用户 (Users),选择一个管理员用户。
在 报警媒介 (Media) 标签页中,点击添加:
类型:
DingDing Webhook收件人:
随便填(Webhook 模式下不生效,但必填)前往 告警 (Alerts) -> 动作 (Actions) -> Trigger actions:
找到负责推送告警的动作(通常叫 "Report problems to admins")启用。
在 操作 (Operations) 标签页中,确认:
发送到用户 (Send to users):包含了你关联了钉钉媒介的那个用户。
仅送到 (Send only to):选择了
DingDing Webhook(或者All)。测试:在媒介类型列表中,点击刚才创建的 DingDing Webhook 后方的 测试 (Test),输入你的 URL 和 Secret,查看钉钉群是否收到消息。
- 上一篇:CentOS7系统ansible离线rpm安装包与全部依赖
- 下一篇:
Powered By Cheug's Blog
Copyright Cheug Rights Reserved.