[toc]
zabbix3.4使用企业微信告警
第一步、注册企业微信,个人就可以注册,然后按照提示填写相关信息
第二步、登陆企业微信
企业微信首界面
应用与小程序-->创建应用,根据提示填写相关信息,这里 已经创建好了一个zabbix监控
点击创建的应用,后续python脚本会用到Agentld和Secret
点击我的企业,后续python脚本会用到企业ID
第三步 、zabbix-server端配置python脚本
3.1 环境准备
#安装依赖包
[root@zabbix-server ~]# yum -y install python-pip
[root@zabbix-server ~]# pip install requests
[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts
[root@zabbix-server alertscripts]# ls
weixin.py
#给脚本赋予执行权限
[root@zabbix-server alertscripts]# chmod +x weixin.py
#一定要修改/tmp/weixin.log这个文件的权限为zabbix,因为zabbix程序在执行weixin.py的时候是以zabbix用户执行的,而这个文件默认是root,不修改权限会报错
[root@zabbix-server alertscripts]# chown zabbix.zabbix /tmp/weixin.log
3.2 编写企业微信告警脚本
3.2.1 使用管理员id
[root@zabbix-server alertscripts]# pwd
/usr/lib/zabbix/alertscripts
[root@zabbix-server alertscripts]# cat >weixin.py <<'EOF'
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#author: bxb
#date: 2018
#comment: zabbix接入微信报警脚本
import requests
import sys
import os
import json
import logging
logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
datefmt = '%a, %d %b %Y %H:%M:%S',
filename = os.path.join('/tmp','weixin.log'),
filemode = 'a')
#corpid和appsecret在创建的应用中查看
#agentid在我的企业中查看
corpid='xxxxxx'
appsecret='xxxxxxx'
agentid=xxxxxx
#获取accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']
#发送消息
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken
touser=sys.argv[1]
subject=sys.argv[2]
#toparty='3|4|5|6'
message=sys.argv[2] + "\n\n" +sys.argv[3]
params={
"touser": touser,
# "toparty": toparty,
"msgtype": "text",
"agentid": agentid,
"text": {
"content": message
},
"safe":0
}
req=requests.post(msgsend_url, data=json.dumps(params))
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
EOF
#验证脚本是否能正确发送信息,BaiXueBing为企业微信账号,在通讯录-->成员信息中查看
[root@zabbix-server alertscripts]# ./weixin.py 企业微信号 test test
3.2.2 企业微信机器人告警
编辑脚本
cat > /usr/lib/zabbix/alertscripts/enterprise_wechat.py <<EOF
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "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)
EOF
测试,机器人能收到告警即可
python enterprise_wechat.py 告警测试
企业微信收到信息即为正确
第四步、zabbix-server端配置
4.1 管理-->报警媒介类型-->创建媒体类型
4.2 填写相关信息
脚本名称为自己定义的weixin.py,路径为在zabbix-server端/etc/zabbix/zabbix_server.conf中定义
AlertScriptsPath=/usr/lib/zabbix/alertscripts
在下图中脚本参数的地方写入以下3个参数,注意脚本参数一定要填写正确
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
4.3 设置收件人
右上角小人头-->报警媒介-->添加
第五步、修改告警相关信息
5.1 修改告警操作
修改操作标题如下
服务器:{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}
}
5.2 修改恢复操作
修改恢复标题如下
服务器:{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}
}
5.3 修改确认信息
修改确认标题如下
服务器:{HOST.NAME}: 报警确认
修改确认内容如下
服务器:{HOST.NAME}: 报警确认
{
确认人:{USER.FULLNAME}
时间:{ACK.DATE} {ACK.TIME}
确认信息如下:
"{ACK.MESSAGE}"
问题服务器IP:{HOSTNAME1}
问题ID:{EVENT.ID}
当前的问题是: {TRIGGER.NAME}
}
第六步、验证
企业微信中创建的zabbix监控应用能收到信息即为正确
pc端企业微信
手机端企业微信