zabbix企业微信报警实现
企业微信配置
# 注册
企业微信注册地址:https://work.weixin.qq.com
笔者注册的企业微信名称为 5iik
# 配置
# 在主干5iik(企业名称)下添加子部门(监控组),并将自己加入到组中;
# 依次点击 应用管理 > 创建应用,将可见范围选择 "监控组";
# 笔者创建的应用名称为 "监控示警"
# 至此,企业微信配置完毕,需要收集的信息如下:
1)成员账号
2)组织部门ID
3)Agentld和Secret
4)企业ID
zabbix服务端配置
# 安装Python模块
# pip install simplejson
# zabbix server配置
# 默认zabbix调用的脚本目录为 /usr/lib/zabbix/alertscripts
# 配置监控监本
[root@kazihuo ~]# cat /usr/lib/zabbix/alertscripts/wechat.py
1 #!/usr/bin/python 2 #_*_coding:utf-8 _*_ 3 4 import urllib,urllib2 5 import json 6 import sys 7 import simplejson 8 9 reload(sys) 10 sys.setdefaultencoding('utf-8') 11 12 13 def gettoken(corpid,corpsecret): 14 gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret 15 print gettoken_url 16 try: 17 token_file = urllib2.urlopen(gettoken_url) 18 except urllib2.HTTPError as e: 19 print e.code 20 print e.read().decode("utf8") 21 sys.exit() 22 token_data = token_file.read().decode('utf-8') 23 token_json = json.loads(token_data) 24 token_json.keys() 25 token = token_json['access_token'] 26 return token 27 28 def senddata(access_token,user,subject,content): 29 send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token 30 send_values = { 31 "touser":"LuoMuRui", #企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。 32 "toparty":"2", #企业号中的部门id。 33 "msgtype":"text", #消息类型。 34 "agentid":"1000002", #企业号中的应用id。 35 "text":{ 36 "content":subject + '\n' + content 37 }, 38 "safe":"0" 39 } 40 # send_data = json.dumps(send_values, ensure_ascii=False) 41 send_data = simplejson.dumps(send_values, ensure_ascii=False).encode('utf-8') 42 send_request = urllib2.Request(send_url, send_data) 43 response = json.loads(urllib2.urlopen(send_request).read()) 44 print str(response) 45 46 47 if __name__ == '__main__': 48 user = str(sys.argv[1]) #zabbix传过来的第一个参数 49 subject = str(sys.argv[2]) #zabbix传过来的第二个参数 50 content = str(sys.argv[3]) #zabbix传过来的第三个参数 51 52 corpid = 'ww15a76b039cce012c' #企业号标识 53 corpsecret = '5aKnj_gPRp6haFmWvly7RxMXy97S8nUEzDxxxxxxxxx' #Secret是管理组凭证密钥 54 accesstoken = gettoken(corpid,corpsecret) 55 senddata(accesstoken,user,subject,content)
# 报警测试
[root@kazihuo ~]# python /usr/lib/zabbix/alertscripts/wechat.py LuoMuRui TEST "It's a test."
https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ww15a76b039cce012c&corpsecret=5aKnj_gPRp6haFmWvly7RxMXy97S8nUEzDTsiQmB9e0
{u'invaliduser': u'', u'errcode': 0, u'errmsg': u'ok'}
# 执行脚本后将收到企业微信发来的消息,如下:
zabbix界面配置
# 报警思路
先创建微信脚本报警媒介,然后创建报警用户,并关联报警媒介,再创建动作。当监控项的监控指标异常,并达到指定的报警级别后,会触发动作进行相应的操作(给指定的报警用户发送信息),指定用户收到报警信息后,通过报警媒介发出微信告警消息!
# 页面操作
# 创建报警媒介
# 依次点击 Administration > Media types > Create media type;
方便复制:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
# 创建用户(wc)
# 依次点击 Administrator > User > Create user;
# 配置 Media;
# 创建动作
# 依次点击Configuration > Actions > Create action;
方便复制:
[[ 告警信息 ]]
{TRIGGER.NAME}
告警主机: {HOSTNAME1}
告警时间: {EVENT.DATE} {EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
事件ID: {EVENT.ID}
方便复制:
[[ 恢复信息 ]]
{TRIGGER.NAME}
恢复主机: {HOSTNAME1}
告警时间: {EVENT.DATE} {EVENT.TIME}
恢复项目: {TRIGGER.KEY1}
事件ID: {EVENT.ID}
告警功能验证
# 在zabbix server服务器上将zabbix_agent服务停掉,几分钟后可在zabbix面板看到故障信息;
[root@kazihuo ~]# systemctl stop zabbix-agent
# 过几分钟后启动agent服务,整个过程收到的微信告警如下:
重点说明
1、当监控告警收件人需要增加时,只需将其微信加入企业微信中对应的 "监控组" 即可;
2、当微信用户登录了企业微信后,企业微信发送的报警信息就只能在企业微信中接收,若需要在微信中也能收到告警信息,需要找企业微信管理员索要"微工作台"的二维码并关注。然后在企业微信app中依次点击 "我" > "设置" > "新消息通知",然后关闭 "仅在企业微信中接收消息"即可!
========================================
转载请保留此段声明,且在文章页面明显位置给出原文链接,谢谢!
==============================================================================
^_^ 如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,您的“推荐”将是我最大的写作动力 ^_^
==============================================================================