问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Zabbix微信报警程序实战指南

创作时间:
2025-01-22 08:12:40
作者:
@小白创作中心

Zabbix微信报警程序实战指南

在IT运维领域,监控系统的报警功能至关重要。Zabbix作为一款开源监控系统,提供了丰富的报警方式,其中微信报警因其便捷性和普及性而广受欢迎。本文将详细介绍如何在Zabbix中配置微信报警程序,让你能够及时通过微信接收系统告警信息。

01

环境准备

在开始配置之前,确保你已经具备以下环境:

  1. Zabbix服务器:已安装并运行Zabbix Server和Web界面。
  2. 企业微信账号:拥有管理员权限的企业微信账号。
  3. 网络连通性:Zabbix服务器能够访问企业微信API。
02

配置企业微信机器人

  1. 登录企业微信管理后台:打开企业微信官网(https://work.weixin.qq.com),使用管理员账号登录。

  2. 创建群聊:在企业微信中创建一个新的群聊,或者选择一个现有的群聊。

  3. 添加群机器人

    • 打开群聊界面,点击右上角的三个点。
    • 选择“群管理” > “机器人管理”。
    • 点击“添加机器人”,按照提示完成创建。
    • 保存生成的Webhook地址,这是后续配置的关键信息。
03

配置Zabbix微信报警

1. 创建媒介类型

  1. 登录Zabbix Web界面,进入“配置” > “报警媒介类型”。
  2. 点击“创建媒介类型”。
  3. 填写以下信息:
    • 名称:例如“企业微信”
    • 类型:选择“Webhook”
    • 脚本:粘贴以下代码:
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=YOUR_WEBHOOK_KEY';

        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') {
            throw "Failed to send message: " + response.errmsg;
        }
    },
};

try {
    var params = JSON.parse(value);

    if (typeof params.Key === "undefined") {
        throw 'Incorrect value is given for parameter "Key": parameter is missing';
    }

    Wechat.token = params.Key;
    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 + ".";
}
  1. 参数配置
    • Key:企业微信机器人的Webhook地址中的key值。
    • To:接收消息的用户ID或群聊ID。
    • Subject:消息标题。
    • Message:消息内容。

2. 配置用户媒介

  1. 进入“管理” > “用户”。
  2. 选择需要接收报警的用户,点击“编辑”。
  3. 在“媒介”选项卡中,点击“添加”。
  4. 填写以下信息:
    • 类型:选择刚才创建的“企业微信”。
    • 发送到:输入企业微信的UserID或群聊ID。
    • Key:企业微信机器人的Webhook地址中的key值。

3. 创建动作

  1. 进入“配置” > “动作”。
  2. 点击“创建动作”。
  3. 填写以下信息:
    • 名称:例如“微信告警”
    • 条件:根据需要设置触发条件。
    • 操作:选择“发送消息”。
    • 媒介类型:选择“企业微信”。
    • 主题:输入消息标题,例如“{TRIGGER.SEVERITY} - {TRIGGER.NAME}”。
    • 消息:输入消息内容,可以使用Zabbix的宏变量,例如:
故障信息:{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}
04

测试与验证

  1. 在Zabbix中触发一个测试告警,例如通过创建一个临时的触发器。
  2. 检查企业微信是否收到告警信息。
  3. 确认消息内容是否正确,包括标题、时间、主机名等信息。
05

注意事项

  1. 安全性:企业微信的Webhook地址包含敏感信息,务必妥善保管,避免泄露。
  2. 网络访问:确保Zabbix服务器能够访问企业微信API,否则可能导致报警失败。
  3. 消息格式:支持Markdown格式,可以使用标题、列表等格式化消息内容,使信息更清晰易读。
  4. 错误处理:在脚本中添加了错误处理逻辑,如果发送失败会记录日志,方便排查问题。

通过以上步骤,你就可以在Zabbix中成功配置微信报警功能。当系统出现异常时,你将能够及时通过微信收到告警信息,从而快速响应和处理问题,提升运维效率。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号