企业微信&携手Zabbix 实现监控报警

企业微信&携手Zabbix 实现监控报警

一、背景:

企微&携手Zabbix 实现监控报警

项目已上线,现需要做监控的告警推送,刚开始想使用邮箱,后来想还是使用企业微信的WebHook来的方便些。话不多说,以下是zabbix 使用企业微信Webhook 实现监控报警

二、环境:

zabbix 5.0

企业微信机器人

备注: 本文zabbix安装步骤省略

三、zabbix 添加报警媒介

打开zabbix控制台——>管理——>报警媒介类型

企微&携手Zabbix 实现监控报警

点击右上角,创建媒介类型

企微&携手Zabbix 实现监控报警

填写名称: 企业微信机器人告警

类型: 脚本

脚本名称: webchat.py (先定义下,后面去机器上创建该名称命名的python脚本)

脚本参数:

{ALERT.MESSAGE}
{ALERT.SENDTO}
{ALERT.SUBJECT}
企微&携手Zabbix 实现监控报警

点击保存即可创建媒介

四、zabbix 配置报警动作

告警媒介创建好之后,就需要去创建报警动作,当报警级别等于 XX 级别的时候,就需要zabbix 去调用脚本 发送告警通知,下面我们来具体的配置下

打开zabbix控制台——>配置——>动作

企微&携手Zabbix 实现监控报警

点击右上角,创建动作

企微&携手Zabbix 实现监控报警

填写名称: 企业微信监控

计算方式: 与/或 (默认)

条件:点击添加,添加触发条件

类型: 触发器示警度

操作者: 等于

严重性: 信息,警告,一般严重,严重,灾难 (除了未分类,其他的全部一一勾选,添加上)

企微&携手Zabbix 实现监控报警

企微&携手Zabbix 实现监控报警

触发条件添加完之后,继续添加动作【触发后动作】

点击操作

默认操作步骤持续时间: 改为 1m

暂停操作以制止问题: 勾选上

下面会看到有两个操作。

第一个操作表示告警发生后的操作

第二个操作表示告警恢复后的操作

(1)、添加第一个:点击添加

操作类型: 发送消息

步骤: 默认

步骤持续时间: 默认

send to users: 选择需要发送的用户

仅送到: 企业微信机器人告警

Custom message : 勾选上,添加自定义消息模板

信息: 这些都是zabbix 默认自带的变量,直接引用即可

告警主机:  {HOSTNAME1}
告警时间:  {EVENT.DATE} {EVENT.TIME}
告警等级:  {TRIGGER.SEVERITY}
告警信息:  {TRIGGER.NAME}
告警项目:  {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}

点击 Add 完成

企微&携手Zabbix 实现监控报警

(2)、添加第二个,恢复操作:点击添加

操作类型: 发送消息

步骤: 默认 1-1

步骤持续时间: 默认 0

send to users: 选择需要发送的用户

仅送到: 企业微信机器人告警

Custom message : 勾选上,添加自定义消息模板

信息: 这些都是zabbix 默认自带的变量,直接引用即可

告警已恢复 OK 
告警主机: {HOSTNAME1}
告警时间: {EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目: {TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

点击 Add 完成

企微&携手Zabbix 实现监控报警

两个动作都添加完成之后,点击添加 即可配置好报警动作

五、给zabbix 用户添加报警媒介

打开zabbix控制台——>User settings——>报警媒介

点击添加

类型: 企业微信机器人告警

收件人: 自定义名称

当启用时: 默认 【1-7,00:00-24:00】

严重性则使用: 信息,告警,警告,一般严重,严重,灾难

已启用: 勾选上

点击添加,再点击更新 即可给zabbix 用户添加好报警媒介

企微&携手Zabbix 实现监控报警

企微&携手Zabbix 实现监控报警

企微&携手Zabbix 实现监控报警

六、登录到企业微信,创建群机器人

拉上你的小伙伴,组建一个群,我这里群名称为: 运维告警&发布 通知群

添加群机器人,给机器人起个 漂亮的名字

复制下 群机器人的Webhook 地址

企微&携手Zabbix 实现监控报警

企微&携手Zabbix 实现监控报警

七、编写webchat.py 脚本

登录到zabbix-server 服务器上,报警媒介脚本的路径,默认在
/usr/lib/zabbix/alertscripts 路径下

#编写python脚本

小伙伴可以直接使用我的脚本,只需要改下脚本中的Webhook 地址就可以了

[root@sre alertscripts]# vim wechat.py 
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os

headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XX-XXX-XXX-XXXX-XXX"
def msg(text):
    json_text= {
     "msgtype": "text",
        "text": {
            "content": text
        },
    }
    print requests.post(api_url,json.dumps(json_text),headers=headers).content

if __name__ == '__main__':
    text = sys.argv[1]
    msg(text)

直接在机器上运行python脚本,测试下效果

[root@sre alertscripts]# python wechat.py "测试,晚上好呀"
{"errcode":0,"errmsg":"ok"}
企微&携手Zabbix 实现监控报警

再看下企业微信群里有没有测试的消息

企微&携手Zabbix 实现监控报警

可以看到测试的消息,说明我们写的脚本是没有问题的

七、模拟故障,测试告警

模拟登录主机,触发告警

企微&携手Zabbix 实现监控报警

本文版权归 飞翔沫沫情 作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 原文链接 如有问题, 可发送邮件咨询,转贴请注明出处:https://www.fxkjnj.com/3157/

发表评论

登录后才能评论

评论列表(3条)