zabbix 接入企业微信告警
[TOC]
1.创建消息群并添加机器人
- 第1步,创建一个企业微信消息群,点击右上角的“...”,然后选择“消息推送”
- 第2步,填写机器人名字,复制并保存 Webhook 地址(后面需要用到),然后选择“保存”
示例:
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=39f7794c-a1ae-4bc2-9f69-40fa150c13e8
2.创建告警脚本
- 第3步,创建告警日志文件,示例
/etc/zabbix/logs/wecom.log
mkdir -p /etc/zabbix/{logs,alertscripts}
touch /etc/zabbix/logs/wecom.log
chown zabbix.zabbix -R /etc/zabbix/
- 第4步,调整 zabbix_server.conf 中告警脚本的路径,并重启 zabbix_server 服务
#.修改告警脚本的路径
new="/etc/zabbix/alertscripts"
sed -i "s|^AlertScriptsPath.*|AlertScriptsPath=${new}|" /usr/local/zabbix/etc/zabbix_server.conf
cat /usr/local/zabbix/etc/zabbix_server.conf | grep Scripts
#.重启zabbix服务
service zabbix_server restart
- 第5步,创建告警脚本,注意修改 webhook值 及 告警日志文件
[root@zabbix-server ~]# cat /etc/zabbix/alertscripts/wecom.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
headers = {'Content-Type'
: 'application/json;charset=utf-8'}
def msg(text):
json_text = {
"msgtype"
: "text",
"text": {
"content": text,
"mentioned mobile list": ["xxx"] #在群内告警时@的对象
}
}
print(requests.post(api_url, json.dumps(json_text), headers=headers).content)
if __name__ == '__main__':
headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=39f7794c-a1ae-4bc2-9f69-40fa150c13e8"
text = sys.argv[1]
msg(text)
- 第6步,配置告警脚本权限
chmod +x /etc/zabbix/alertscripts/wecom.py
chown zabbix.zabbix /etc/zabbix/alertscripts/wecom.py
- 第7步,安装python模块,测试
wecom.py脚本
#.安装pip
curl -sL 'http://iso.sqlfans.cn/python/install_pip_1931.sh' | bash
pip --version
#.安装requests模块
pip install requests
#.格式:wecom.py 告警信息
/etc/zabbix/alertscripts/wecom.py 告警
- 第8步,确认消息群已收到如下告警消息:
3.创建zabbix报警媒介
- 第9步,登录zabbix控制台,创建报警媒介,依次点击“管理 -> 报警媒介类型 -> 创建媒介类型”
- 第10步,填写报警媒介的相关信息,包含1个脚本参数
{ALERT.MESSAGE},然后点击“添加”
- 第11步,配置动作,依次点击“配置 -> 动作 -> 触发器动作 -> 创建动作”
- 第12步,在[动作]标签页,填写名称,示例 wecom_alert
- 第13步,在[操作]标签页,依次配置“操作、恢复操作”,然后点击“添加”
#告警操作内容:
##主题:
服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
##消息:
服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
#恢复操作内容
##主题:
服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!
##消息:
服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障已恢复!
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}
事件ID:{EVENT.ID}
- 第14步,为指定用户添加报警媒介,依次点击“用户设置 -> 配置 -> 添加”,报警媒介类型 选择 wecom
4.告警测试
- 第15步,执行
service zabbix_agentd stop停掉 zabbix 服务器的 agent 服务,等待2-3分钟,可以看到主页发现问题,同时消息群收到预警信息
- 第16步,执行
service zabbix_agentd start启动 agent 服务,等待2-3分钟,可以看到主页的问题已恢复,同时消息群收到恢复信息
至此,zabbix自动发送预警及恢复信息到企业微信群,已经全部配置完成。










