zabbix基于webhook发送到企业微信

本文介绍了两种在Zabbix中配置发送企业微信webhook警报的方法。方法一是通过编写Python脚本,方法二是利用Zabbix自带的webhook功能。详细步骤包括设置脚本、配置警报媒介类型、定义消息模板以及创建动作。每种方法都提供了问题和恢复通知的模板,并给出了验证配置的说明。
摘要由CSDN通过智能技术生成

参考:https://www.cnblogs.com/double-dong/p/11809961.html
https://blog.csdn.net/stars_moon1024/article/details/123042369

zabbix发送企业微信webhook有两种方法:
方法一、通过脚本发送(需要安装python3)
方法二、通过zabbix自带的webhook功能来发送(推荐)

1、获取企业微信的webhook的token
在这里插入图片描述

配置方法一、

一、企微机器人wehook发送python脚本
/data/zabbix/alertscripts/wx_webhook.py

#!/usr/bin/python3
# -*- coding:utf-8 -*-

import requests
import sys
import json

class WechatImage(object):
    # 发送消息
    def send_news_message(self, qwurl, subject, content):
        url = qwurl
        data = {
            "msgtype": "markdown",
            "markdown": {
                "content": subject + '\n' + content
            }
        }
        headers = {'content-type': 'application/json'}
        reponse = requests.post(url, json.dumps(data), headers=headers)
        return reponse

if __name__ == '__main__':
    qwurl = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=d4421ecb-82af-xxxxxxxxxxxxxxxxxxxxxxx'   #替换为企微的专用地址
    subject = str(sys.argv[2])
    content = str(sys.argv[3])
    wechat_img = WechatImage()
    wechat_img.send_news_message(qwurl, subject, content)

chmod +x /data/zabbix/alertscripts/wx_webhook.py

二、配置警报媒介类型
1、管理–>警报媒介类型–>新建qiwei_robot
(脚本的三个参数都是zabbix内置变量,分别为:报警收件人:{ALERT.SENDTO}、报警标题:{ALERT.SUBJECT}、报警内容:{ALERT.MESSAGE})

名称:  qiwei_robot
类型:脚本
脚本名称:wx_webhook.py
脚本参数
参数	:
    {ALERT.SENDTO}
    {ALERT.SUBJECT}
    {ALERT.MESSAGE}
描述:  企微机器人警报

问题模板

主题:
告警通知

消息: 
当前状态:<font color="warning">{TRIGGER.STATUS}</font>
告警IP:{HOST.IP}
所属群组:{TRIGGER.HOSTGROUP.NAME}
告警等级:<font color="warning">{TRIGGER.SEVERITY}</font>
告警信息:{TRIGGER.NAME}
当前详情:{ITEM.NAME}  <font color="warning">{ITEM.VALUE}</font>
告警时间:{EVENT.DATE} {EVENT.TIME}

--------------------------------------------------------------------
问题恢复模板
主题:
恢复通知

消息: 
当前状态:<font color="info">{TRIGGER.STATUS}</font>
告警IP:{HOST.IP}
所属群组:{TRIGGER.HOSTGROUP.NAME}
告警信息:{TRIGGER.NAME}
当前详情:{ITEM.NAME}  <font color="info">{ITEM.VALUE}</font>
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}

3、设置action,使警报生效
配置–>动作–>新建”动作“
1、动作–>名称:qiwei_robot
2、操作–>

         默认操作步骤持续时间:  1h
         操作
         步骤	细节	开始于	持续时间	动作
         发送消息给用户: Admin (Zabbix Administrator) 通过 qiwei_robot
         发送消息给用户群组: Zabbix administrators 通过 qiwei_robot
         
         恢复操作
         发送消息给用户: Admin (Zabbix Administrator) 通过 qiwei_robot
         发送消息给用户群组: Zabbix administrators 通过 qiwei_robot

4、验证
在这里插入图片描述

在这里插入图片描述


配置方法二、

一、配置警报媒介类型
1、管理–>警报媒介类型–>新建wx_webhook
(脚本的三个参数都是zabbix内置变量,分别为:报警收件人:{ALERT.SENDTO}、报警标题:{ALERT.SUBJECT}、报警内容:{ALERT.MESSAGE})

名称:  qiwei_robot
类型:脚本
脚本名称:wx_webhook.py
脚本参数
参数	:
    名称                值
     Message        {ALERT.MESSAGE}
    Subject            {ALERT.SUBJECT}
    To                    {ALERT.SENDTO}
    Token              2fe963bf-7a37-4ab4-90d1-55569ff533e3   #	群聊机器人webhook地址的key

脚本:
```python
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, '<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 + '\n' + params.Message;
    Wechat.sendMessage();
 
    return 'OK';
}
catch (error) {
    Zabbix.Log(4, '[Wechat Webhook] notification failed: ' + error);
    throw 'Sending failed: ' + error + '.';
}

2、配置Message templates
报警媒介类型–>Message type

问题模板

message type:  问题
主题:告警通知

消息: 
当前状态:<font color="warning">{TRIGGER.STATUS}</font>
告警IP:{HOST.IP}
所属群组:{TRIGGER.HOSTGROUP.NAME}
告警等级:<font color="warning">{TRIGGER.SEVERITY}</font>
告警信息:{TRIGGER.NAME}
当前详情:{ITEM.NAME}  <font color="warning">{ITEM.VALUE}</font>
告警时间:{EVENT.DATE} {EVENT.TIME}

问题恢复模板

message type:  promeble recovery
主题:恢复通知

消息: 
当前状态:<font color="info">{TRIGGER.STATUS}</font>
告警IP:{HOST.IP}
所属群组:{TRIGGER.HOSTGROUP.NAME}
告警信息:{TRIGGER.NAME}
当前详情:{ITEM.NAME}  <font color="info">{ITEM.VALUE}</font>
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}

二、设置action,使警报生效
配置–>动作–>trigger actions–>创建动作
1、动作–>名称:wx_webhook
条件:触发器示警度 大于等于 警告
2、操作–>

         默认操作步骤持续时间:  1h
         操作
           步骤:  1 - 3 	            #以持续时间为间隔发送3次,条件为没有确认
           步骤持续时间:    60s         #60秒内不重复发送告警	
           发送消息给用户: Admin 
           发送消息给用户群组: Zabbix administrators
           仅送到:wx_webhook
           条件: Event is not acknowledged

在这里插入图片描述
在这里插入图片描述

三、对用户配置告警策略
管理–>用户–>Admin(选择用户)–>报警媒介–>添加
类型:wx_webhook (自定义名称)
收件人: 通信员 (随便)
当启用时: 1-7,00:00-24:00 (默认就好)

在这里插入图片描述

4、验证
在这里插入图片描述

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值