微信报警
首先申请一个企业号:https://qy.weixin.qq.com/
1、通讯录添加企业成员:
- 创建子部门:
- 创建新应用:
- 给部门设置管理员:
我们要准备这些东西:
一个微信企业号
企业号已经被部门成员关注
企业号里有一个可以发消息的应用
一个授权管理员,可以使用该应用给成员发消息
我们要取到这些信息,这五个信息在微信报警脚本中全部要用到:
成员账号
组织部门ID
应用ID(agentid)和Secret
企业标识(CropID)
这个位置最下面
编写微信报警Python脚本
默认yum安装的zabbix脚本目录是/usr/lib/zabbix/alertscripts
vim weixin.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#author: xx
#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('/usr/lib/zabbix/alertscripts','weixin.log'),
filemode = 'a')
corpid='ww39622e6185e63612' #CorpID是企业号的标识
appsecret='bmrb_sHGS2rAPi-YdWq3M1AUb73EBSeo00po4BsFWVo' #是管理组凭证密钥
agentid=1000003 #企业号中的应用id
#获取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": "LiJunMin",#企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送
"toparty": "2",#企业号中的部门id
"msgtype": "text",#消息类型
"agentid": "1000003", #企业号中的应用id,同上agentid号
"text": {
"content": message
},
"safe":0
}
req=requests.post(msgsend_url, data=json.dumps(params))
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
#添加权限
chmod +x weixin.py
touch weixin.log
chown zabbix.zabbix weixin.log
然后配置zabbix web端
创建一个微信报警用户(也可直接用管理用户admin,“可选”)
示警媒介配置
添加动作
故障与恢复信息模板
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
动作操作配置
最后测试
#最好用zabbix用户来测试,来排除权限问题
python weixin.py [email protected] test test
如果你企业微信收到test信息说明脚本通信OK。
如果执行的时候有如下报错就重新安装缺少的模块
[root@pek1-perl62022 alertscripts]# python weixin.py [email protected] weixin weixin
Traceback (most recent call last):
File "weixin.py", line 7, in <module>
import requests
ImportError: No module named requests
提示没有requests
重新安装requests模块即可
[root@pek1-perl62022 alertscripts]# yum install python-requests -y
执行完成后,然后再停止某一服务,通过zabbix报警查看微信是否能接收到信息。
例如停掉MySQL服务:
一分钟后web端检测中的仪表盘和微信就会同时报警
微信报警到此结束!