马嘉炜 | Zabbix开源社区签约专家
SRE运维工程师,六年Zabbix监控系统使用经验。在Zabbix架构设计及性能优化领域有丰富的经验,擅长监控模板制作及Zabbix API的二次开发。
官方使用手册《Zabbix标准模板指南》译者
简介
自 Zabbix 4.4.4 版本开始,Zabbix 的报警媒介类型加入了Webhook的支持。
Webhook 类型可用于使用自定义 JavaScript 代码进行 HTTP 调用,可以很方便的和外部系统进行集成,例如钉钉机器人、飞书机器人、企业微信等。
也可以集成第三方的系统来实现更加高级的功能,例如当主机自动注册到 Zabbix 中时,通过 Webhook 类型调用 API,将资产信息同步到 CMDB 系统,或者报警发生时,调用自动化平台的 API 来实现故障自愈的能力。
Webhook VS 自定义脚本
配置钉钉机器人告警
一、创建报警媒介
打开 Web 界面,并导航到管理 -> 报警媒介类型,点击右上角创建媒介类型
- 配置报警媒介类型
配置参考如下:
名称:DingTalk
类型:Webhook
参数:
| 名称 | 值 | 说明 |
| —- | —- | —- |
| HTTPProxy | | Http代理地址 |
| Message | {ALERT.MESSAGE} | 告警消息内容 |
| Subject | {ALERT.SUBJECT} | 告警消息主题 |
| To | {ALERT.SENDTO} | 告警消息接收者 |
脚本:见下文
超时:30s
其他配置及说明参考文档:Webhook
脚本内容:
try {
// 实例化参数
var params = JSON.parse(value),
req = new HttpRequest(),
msg = {
msgtype: 'text',
text: {
content: params.Subject + '\n' + params.Message
}
},
resp; // 判断是否需要配置HTTP代理
if (params.HTTPProxy) {
req.setProxy(params.HTTPProxy);
} // 添加header头变量
req.addHeader('Content-Type: appl