zabbix监控-企业微信webhook告警并使用markdown格式
最终告警样式:
markdown格式与text格式的优点:文字排版清晰,可对不同文字标识颜色,大小等。
此方法使用zabbix提供的webhook方式,不需要建立脚本文件。
zabbix版本:Zabbix 5.2.3
一、创建企业微信群聊机器人
点开群聊,右上角更多,输入名字,创建完成即可
名称随意,类型选择webhook
参数设置:
Message |
{ALERT.MESSAGE} |
Subject |
{ALERT.SUBJECT} |
To |
{ALERT.SENDTO} |
Token |
群聊机器人webhook地址的key |
Token复制群聊机器人KEY=后面的字符(鼠标移动到群聊机器人头像就能看到)
脚本(脚本参考网络上大神的,不是我原创):
var Wechat = {token: null,to: null,message: null,parse_mode: null,sendMessage: function() {var params = {msgtype: “markdown”,chat_id: Wechat.to,markdown: {content:Wechat.message},disable_web_page_preview: true,disable_notification: false},data,response,request = new CurlHttpRequest(),url = ‘https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=’ + Wechat.token;if (Wechat.parse_mode !== null) {params[‘parse_mode’] = Wechat.parse_mode;}request.AddHeader(‘Content-Type: application/json’);data = JSON.stringify(params);// Remove replace() function if you want to see the exposed token in the log file.Zabbix.Log(4, ‘[Wechat Webhook] URL: ‘ + url.replace(Wechat.token, ”));Zabbix.Log(4, ‘[Wechat Webhook] params: ‘ + data);response = request.Post(url, data);Zabbix.Log(4, ‘[Wechat Webhook] HTTP code: ‘ + request.Status());Zabbix.Log(4, ‘[Wechat Webhook] response: ‘ + response);try {response = JSON.parse(response);}catch (error) {response = null;Zabbix.Log(4, ‘[Wechat Webhook] response parse error’);}if (request.Status() !== 200 ||response.errcode !== 0 || response.errmsg !== ‘ok’) {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.Token === ‘undefined’) {throw ‘Incorrect value is given for parameter “Token”: parameter is missing’;}Wechat.token = params.Token;if ([‘Markdown’, ‘HTML’, ‘MarkdownV2’].indexOf(params.ParseMode) !== -1) {Wechat.parse_mode = params.ParseMode;}Wechat.to = params.To;Wechat.message = params.Subject + ” + params.Message;Wechat.sendMessage();return ‘OK’;}catch (error) {Zabbix.Log(4, ‘[Wechat Webhook] notification failed: ‘ + error);throw ‘Sending failed: ‘ + error + ‘.’;}
添加报警模板:
模板类型选择问题,内容如下,根据个人喜好配置,也可直接复制下方内容。
企业微信markdown参考手册地址:群机器人配置说明 – 接口文档 – 企业微信开发者中心
https://developer.work.weixin.qq.com/document/path/91770
主题:
### 【监控告警】主机: {HOST.NAME} IP地址:{HOST.IP}
消息:
>主机名称:**{HOST.NAME}**>主机IP:{HOST.IP}>告警时间:{EVENT.DATE}-{EVENT.TIME}>问题名称:{EVENT.NAME}>问题详情:{ITEM.NAME}:{ITEM.VALUE}>目前状态:{TRIGGER.STATUS}>操作数据:{EVENT.OPDATA}
我只配置了问题发送,如需配置问题解决消息,也可同样在这里添加,类型选“问题恢复”,这里我没有加markdown格式的参数配置。
三、zabbix添加动作
名称:随意命名
条件:添加与下图一致,表示当告警等级大于“警告”才会触发这个动作。
添加操作:
操作类型:发送消息
步骤和持续时间:可与下方图片设置一致。
发送的用户:我这里添加到admin用户。
仅送到:选择已创建好的报警媒介webhook
条件:与下方一致
想要具体知道步骤和持续时间含义,请阅读下方图片内容释义(转发):
需要恢复操作和更新操作的消息提醒,可自行添加,这里我没有添加了。
四、设置用户
进入用户admin
选择报警媒介,类型选webhook
收件人:随意名字就行
其他信息与下方图片内容一致
设置完成,消息告警就接受到了。
添加报警媒介时可以测试能否发送: