环境介绍:
系统:Centos7.3
zabbix:3.4.13
企业微信
这里直接上企业微信官网直接注册就行,注册比较简单,也不用像以前那样提供营业执照什么的了。
地址:http://work.weixin.qq.com/
微信接口调用,测试一下接口有没有问题
调用微信接口需要一个调用接口的凭证:access_token
通过CorpID和Secret可以获得access_token
微信企业号接口调试地址: http://qydev.weixin.qq.com/debug
1、查看Zabbix-server的脚本路径在哪里
打开zabbix-server的配置文件,指定脚本存放路径(这一步很重要,不做的话zabbix识别不到脚本)
root@backup:~ # vim /etc/zabbix/zabbix_server.conf
2、下载python微信脚本放置上面设置的脚本存放路径
#安装simplejson
#wget https://files.pythonhosted.org/packages/e3/24/c35fb1c1c315fc0fffe61ea00d3f88e85469004713dab488dee4f35b0aff/simplejson-3.16.0.tar.gz
#tar zxvf simplejson-3.16.0.tar.gz && cd simplejson-3.16.0
python setup.py build
python setup.py install
#下载wechat.py脚本
#git clone https://github.com/X-Mars/Zabbix-Alert-WeChat.git
#cp Zabbix-Alert-WeChat/wechat.py /usr/local/zabbix/alertscripts/
#chmod +x wechat.py && chown zabbix:zabbix wechat.py
3、修改wechat.py脚本 (要修改的部分只有corpid,appsecret,agentid,还有日志路径,把刚才截图里查询的结果填进去即可)
root@backup:~ # vim /usr/lib/zabbix/alertscripts/wechat.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#date: 2018-11-12
#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('/usr/lib/zabbix/alertscripts','weixin.log'),
filemode = 'a') #指定一下日志的路径
corpid='ww80b211239205218' # 企业ID
appsecret='F9gCNmbiSyB5cvaYwq6BII9egNNBNaOeyr4wOUk' #应用里的Secret
agentid=1000002 #应用里的AgentID
#获取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[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)
4、测试脚本
root@backup:~ # chmod +x /usr/lib/zabbix/alertscripts/wechat.py
root@backup:~ # chown -R zabbix:zabbix /usr/lib/zabbix/alertscripts/ #记得把这个文件夹的属主和属组给到zabbix
这个用户,不然可能zabbix调用不了这个脚本
root@backup:/usr/lib/zabbix/alertscripts # ./wechat.py ZhangYouCheng abc 123456789
{"errcode":0,"errmsg":"ok","invaliduser":""}
参数1,:用户名 参数2:主题 参数3:内容
用户名:注意,这个脚本的参数1的用户名必须是企业微信里的账号名字如下图
查看一下企业微信里能不能收到脚本发来的信息,如果能收到的话已经成功一半了!
ok,收到消息后只需去Zabbix的web配置一下即可
脚本参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
2、配置用户群组,创建监控用户
在创建用户之前先配置一下用户和群组
管理—>用户群组— Zabbix administrators (这个应该是系统自带的群组,没有的话再创建一个吧)
管理—>用户—>创建用户
创建一个接收zabbix报警的用户
依次配置用户、报警媒介、权限
权限的话给读写权限,一定是要读写权限,没有读写权限很有可能没有办法发出去消息 !!!
方便复制
默认标题:故障告警:{TRIGGER.STATUS}: {TRIGGER.NAME}
消息内容:告警主机:{HOST.NAME}
主机地址:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
事件代码:{EVENT.ID}
默认标题:故障解除:{TRIGGER.STATUS}: {TRIGGER.NAME}
恢复主机:{HOST.NAME}
主机地址:{HOST.IP}
恢复时间:{EVENT.DATE} {EVENT.TIME}
恢复等级:{TRIGGER.SEVERITY}
恢复信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
事件代码:{EVENT.ID}
默认标题:Acknowledged: {TRIGGER.NAME}
消息内容:{USER.FULLNAME} acknowledged problem at {ACK.DATE} {ACK.TIME} with the following message:
{ACK.MESSAGE}
Current problem status is {EVENT.STATUS}
配置完后保存