服务器之家

服务器之家 > 正文

Zabbix 5.2 由浅入深之钉钉机器人告警(webhook方式)

时间:2021-06-03 01:30     来源/作者:IT小白Kasar

Zabbix 5.2 由浅入深之钉钉机器人告警(webhook方式)

前面有提到通过python的方式告警,但由于每个人的环境都不一样,容易出现格式缩进等一些问题,而实际上钉钉机器人也是通过webhook的方式来实现的,Zabbix 5.2版本原生支持webhook的方式去推送事件。

首先贴下代码,下面的title部分记得修改为自己的

  1. var dingding = { 
  2.   keynull
  3.   message: null
  4.   msgtype: "markdown"
  5.   proxy: null
  6. sendMessage: function () { 
  7.     var params = { 
  8.        msgtype: dingding.msgtype, 
  9.        markdown: { 
  10.           title: "IT小白Kasar",(注意这里可以修改) 
  11.           text: dingding.message 
  12.         }, 
  13.       }, 
  14.       data, 
  15.       response, 
  16.       request = new CurlHttpRequest(), 
  17.       url = 
  18.         "https://oapi.dingtalk.com/robot/send?access_token=" + 
  19.         dingding.key
  20.     if (dingding.proxy) { 
  21.       request.setProxy(dingding.proxy); 
  22.     } 
  23.     request.AddHeader("Content-Type: application/json"); 
  24.     data = JSON.stringify(params); 
  25.     // Remove replace() function if you want to see the exposed key in the log file. 
  26.     Zabbix.Log( 
  27.       4, 
  28.       "[dingding Webhook] URL: " + url.replace(dingding.key"<BOT KEY>"
  29.     ); 
  30.     Zabbix.Log(4, "[dingding Webhook] params: " + data); 
  31.     response = request.Post(url, data); 
  32.     Zabbix.Log(4, "[dingding Webhook] HTTP code: " + request.Status()); 
  33.     try { 
  34.       response = JSON.parse(response); 
  35.     } catch (error) { 
  36.       response = null
  37.     } 
  38.     if (request.Status() !== 200 || response.errcode !== 0) { 
  39.       if (typeof response.errmsg === "string") { 
  40.         throw response.errmsg; 
  41.       } else { 
  42.         throw "Unknown error. Check debug log for more information."
  43.       } 
  44.     } 
  45.   }, 
  46. }; 
  47. try { 
  48.   var params = JSON.parse(value); 
  49.   if (typeof params.Key === "undefined") { 
  50.     throw 'Incorrect value is given for parameter "Key": parameter is missing'
  51.   } 
  52.   dingding.key = params.Key
  53.   if (params.HTTPProxy) { 
  54.     dingding.proxy = params.HTTPProxy; 
  55.   } 
  56.   dingding.to = params.To
  57.   dingding.message = params.Subject + "\n" + params.Message; 
  58.   dingding.sendMessage(); 
  59.   return "OK"
  60. } catch (error) { 
  61.   Zabbix.Log(4, "[dingding Webhook] notification failed: " + error); 
  62.   throw "Sending failed: " + error + "."

这个脚本贴在下图的这个位置,在报警媒介类型下

Zabbix 5.2 由浅入深之钉钉机器人告警(webhook方式)

需要将key部分修改为自己的机器人的token,主要是下图里的"access_token="的一串字符串。

Zabbix 5.2 由浅入深之钉钉机器人告警(webhook方式)

添加完成后,我们就可以测试下

Zabbix 5.2 由浅入深之钉钉机器人告警(webhook方式)

Zabbix 5.2 由浅入深之钉钉机器人告警(webhook方式)

然后添加下默认告警媒介

Zabbix 5.2 由浅入深之钉钉机器人告警(webhook方式)

最终效果

Zabbix 5.2 由浅入深之钉钉机器人告警(webhook方式)

未美化效果

Zabbix 5.2 由浅入深之钉钉机器人告警(webhook方式)

写在最后

 

这种方式就摆脱了格式问题,可以实现开箱即用,而且无需装额外的环境即可实现,快去试试吧。最后感谢官方的模板,有借鉴部分。

原文链接:https://www.toutiao.com/i6965679632477848101/

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
2021德云社封箱演出完整版 2021年德云社封箱演出在线看
2021德云社封箱演出完整版 2021年德云社封箱演出在线看 2021-03-15
返回顶部