Zabbix 5.0 LTS 配置企业微信(Webhook)自动发送告警信息

依据前面文章Zabbix 5.0 LTS URL 健康监测环境,实现企业微信(Webhook)自动发送告警信息。

一、创建企业微信机器人

  • 先在自己的企业微信群里创建一个机器人,并获取其 WebHook 地址。右击群聊天卡片,添加群机器人。
    获得一个类似下图的 WebHook 地址。注意,这个 WebHook 地址非常重要,请不要泄露。

    # key 的值是唯一的 https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=b55ed8ad-6765-4e8b-827c-xxxxxxxxxx 

二、创建媒介

步骤:配置 -- 报警媒介类型 -- 创建媒介类型 -- 添加

Zabbix 5.0 LTS 配置企业微信(Webhook)自动发送告警信息

脚本内容(固定样式)

var Qiyeweixin = {   key: null,    message: null,   msgtype: "markdown",   proxy: null,    sendMessage: function () {     var params = {         msgtype: Qiyeweixin.msgtype,         markdown: {           content: Qiyeweixin.message,         },       },       data,       response,       request = new CurlHttpRequest(),       url =         "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=" +         Qiyeweixin.key;      if (Qiyeweixin.proxy) {       request.setProxy(Qiyeweixin.proxy);     }      request.AddHeader("Content-Type: application/json");     data = JSON.stringify(params);      // Remove replace() function if you want to see the exposed key in the log file.     Zabbix.Log(       4,       "[Qiyeweixin Webhook] URL: " + url.replace(Qiyeweixin.key, "<BOT KEY>")     );     Zabbix.Log(4, "[Qiyeweixin Webhook] params: " + data);     response = request.Post(url, data);     Zabbix.Log(4, "[Qiyeweixin Webhook] HTTP code: " + request.Status());      try {       response = JSON.parse(response);     } catch (error) {       response = null;     }      if (request.Status() !== 200 || response.errcode !== 0) {       if (typeof response.errmsg === "string") {         throw response.errmsg;       } else {         throw "Unknown error. Check debug log for more information.";       }     }   }, };  try {   var params = JSON.parse(value);    if (typeof params.Key === "undefined") {     throw 'Incorrect value is given for parameter "Key": parameter is missing';   }    Qiyeweixin.key = params.Key;    if (params.HTTPProxy) {     Qiyeweixin.proxy = params.HTTPProxy;   }    Qiyeweixin.to = params.To;   Qiyeweixin.message = params.Subject + "n" + params.Message;   Qiyeweixin.sendMessage();    return "OK"; } catch (error) {   Zabbix.Log(4, "[Qiyeweixin Webhook] notification failed: " + error);   throw "Sending failed: " + error + "."; } 

三、创建动作

步骤:配置 -- 动作 -- 新的触发条件 -- 添加

Zabbix 5.0 LTS 配置企业微信(Webhook)自动发送告警信息

Zabbix 5.0 LTS 配置企业微信(Webhook)自动发送告警信息

Zabbix 5.0 LTS 配置企业微信(Webhook)自动发送告警信息

Custom message

故障信息:{TRIGGER.STATUS}  服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障! 告警主机:{HOSTNAME1} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 告警项目:{TRIGGER.KEY1} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID}   恢复信息:{EVENT.NAME}  服务器: {HOST.NAME}发生:{EVENT.NAME}故障恢复! 告警主机: {HOST.NAME} 告警地址:{HOST.IP} 监控项目:{ITEM.NAME} 监控取值:{ITEM.LASTVALUE} 告警等级:{TRIGGER.SEVERITY} 当前状态:{TRIGGER.STATUS} 告警信息:{TRIGGER.NAME} 告警时间:{EVENT.DATE} {EVENT.TIME} 事件ID:{EVENT.ID}    更新信息:{EVENT.NAME}  服务器: {HOST.NAME}发生:{EVENT.NAME}故障更新! 告警主机: {HOST.NAME} 告警地址:{HOST.IP} 监控项目:{ITEM.NAME} 监控取值:{ITEM.LASTVALUE} 告警等级:{TRIGGER.SEVERITY} 当前状态:{TRIGGER.STATUS} 告警信息:{TRIGGER.NAME} 告警时间:{EVENT.DATE} {EVENT.TIME} 事件ID:{EVENT.ID} 

四、配置用户

Zabbix 5.0 LTS 配置企业微信(Webhook)自动发送告警信息

Zabbix 5.0 LTS 配置企业微信(Webhook)自动发送告警信息

验证结果

Web场景-- 步骤 -- 故意写错URL触发告警

Zabbix 5.0 LTS 配置企业微信(Webhook)自动发送告警信息

Zabbix 5.0 LTS 配置企业微信(Webhook)自动发送告警信息

发表评论

评论已关闭。

相关文章