一、在企业微信群创建机器人
步骤:在企业微信上创建一个群聊,并添加需要接收告警通知的成员。
在群管理创建一个自定义机器人,并获取其Webhook地址
记住该机器人的webhook地址:
二、配置zabbix服务器
1、修改zabbix.conf
[root@zabbix-server alertscripts]# /etc/zabbix/zabbix_server.conf 此目录下服务端文件修改此项,根据自己的服务具体位置处理
AlertScriptsPath=/usr/lib/zabbix/alertscripts
查看设置的脚本的默认路径,web端就可以在这里获取到脚本了
- 设置脚本
在/usr/lib/zabbix/alertscripts创建发送消息的python脚本
vim /usr/lib/zabbix/alertscripts/wechat.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
# 机器人的webhook地址
API_URL = "xxx"
# HTTP请求头部信息
HEADERS = {
'Content-Type': 'application/json;charset=utf-8'
}
# 定义发送消息的函数
def send_text(text):
# 构建消息体
texts = {
"msgtype": "text",
"text": {
"content": text
}
}
# 发送HTTP POST请求
response = requests.post(API_URL, json=texts, headers=HEADERS)
# 打印响应内容(一般用于调试)
print(response.content)
# 如果该文件被直接执行,则从命令行接收一个参数并将其发送到机器人的webhook地址
if __name__ == '__main__':
if len(sys.argv) != 2:
print("Usage: python send_text.py <text>")
sys.exit(1)
text = sys.argv[1] # 获取命令行参数
send_text(text) # 发送消息
3、赋予脚本执行权限
[root@zabbix-server alertscripts]# chmod +x wechat.py
4、执行脚本进行测试
[root@zabbix-server alertscripts]# ./wechat.py 123test
{"errcode":0,"errmsg":"ok"}
然后看看企业微信有没有收到,一般是没有问题,我这里因为缺少模块报错了
需要安装这个模块,但是没有pip命令
因linux系统主要用的centos7,其自带的python版本是2.7,我的系统是2.7.5
并不带pip命令,Python 2.7.9 + 或 Python 3.4+ 以上版本都自带 pip 工具
该如何安装呢?pip安装包安装依赖于setuptools库。
setuptools官网下载地址:https://pypi.org/project/setuptools/
pip官网下载地址:https://pypi.org/project/pip/
python2.7支持的pip版本一定要低于20.3,否则没法使用pip install
setuptools用36.6.0就行,下载完放到对应服务器解压进入目录执行
python setup.py install
然后解压pip压缩包一样操作完
再执行pip install requests
注:因网络问题访问对应域名掉包严重,换个网络就可以了
再次发送就成功了
三、zabbix web页面配置告警信息
1、管理-报警媒介类型-创建告警媒介
脚本名称:wechat.py, /usr/lib/zabbix/alertscripts目录下创建的发送消息的python脚本名称
2、配置告警用户
4、设置告警动作
1、动作信息
2、填写告警时候操作信息
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
告警主机:{HOSTNAME}
告警地址:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
3、填写恢复操作信息
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
告警主机:{HOSTNAME1}
告警地址:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
完成以上步骤后,当Zabbix监控系统检测到故障或异常时,就会调用企业微信机器人发送告警通知到指定的微信群或个人微信号中。
- 手动触发告警,测试微信接收信息
停个对应的服务监控客户端看下报警了