Zabbix基于微信发警报

在zabbix监控中,国内越来越流行使用微信、钉钉、邮件报警,这正式结合了当下的发展趋势。接下来介绍下zabbix如何结合微信发送警报信息。

一、企业微信注册

企业微信注册地址:https://work.weixin.qq.com/

Zabbix基于微信发警报

  • Zabbix基于微信发警报

Zabbix基于微信发警报

Zabbix基于微信发警报

Zabbix基于微信发警报

Zabbix基于微信发警报

Zabbix基于微信发警报

Zabbix基于微信发警报
注意:我们需要记录以下几个值:

Agentld
Secret
CorpID
部门ID

二、下载脚本

[root@node1~]#wget https://www.guoxiangfu.com/wechat

[root@node1~]#vim wechat

  1 #!/usr/bin/env python   #如果是python修改为python3 即可
  2 # -*- coding: utf-8 -*-
  3 ## File Name: wechat.sh
  6 reload(sys)
  7 sys.setdefaultencoding( "utf-8" )
  8 
  9 class WeChat(object):
 10         __token_id = ''
 11         # init attribute
 12         def __init__(self,url):
 13                 self.__url = url.rstrip('/')
 14                 self.__corpid = '你的Corpid'
 15                 self.__secret = '你的SecretID'
 16                 
 17         # Get TokenID
 18         def authID(self):
 19                 params = {'corpid':self.__corpid, 'corpsecret':self.__secret}
 20                 data = urllib.urlencode(params)
 21                 
 22                 content = self.getToken(data)
 23                 
 24                 try:
 25                         self.__token_id = content['access_token']
 26                         # print content['access_token']
 27                 except KeyError:
 28                         raise KeyError
 29                         
 30         # Establish a connection
 31         def getToken(self,data,url_prefix='/'):
 32                 url = self.__url + url_prefix + 'gettoken?'
 33                 try:
 34                         response = urllib2.Request(url + data)
 35                 except KeyError: 
 36                         raise KeyError
 37                 result = urllib2.urlopen(response)
 38                 content = json.loads(result.read())
 39                 return content
 40 
 41         # Get sendmessage url
 42         def postData(self,data,url_prefix='/'):
 44                 request = urllib2.Request(url,data)
 45                 try:
 46                         result = urllib2.urlopen(request)
 47                 except urllib2.HTTPError as e:
 48                         if hasattr(e,'reason'):
 49                                 print 'reason',e.reason
 50                         elif hasattr(e,'code'):
 51                                 print 'code',e.code
 52                         return 0
 53                 else:
 54                         content = json.loads(result.read())
 55                         result.close()
 56                 return content
 57 
 58         # send message
 59         def sendMessage(self,touser,message):
 60 
 61                 self.authID()
 62 
 63                 data = json.dumps({
 64                         'touser':touser,
 65                         'toparty':"2",  #这个相当于刚刚记录的部门ID
 66                         'msgtype':"text",
 67                         'agentid':"2",  #修改为刚刚记录的agentid
 68                         'text':{
 69                                 'content':message
 70                         },
 71                         'safe':"0"
 72                 },ensure_ascii=False)
 73 
 74                 response = self.postData(data)
 75                 print response
 76 
 77 
 78 if __name__ == '__main__':
 79         a = WeChat('https://qyapi.weixin.qq.com/cgi-bin')
 80         a.sendMessage(sys.argv[1],sys.argv[3])

修改权限,所有者、所属组

[root@node1~]#chmod +x wechat
[root@node1~]#chown zabbix.zabbix wechat

##验证是否可以发送成功
[root@node1~]#./wechat zabbix test test

{u'invaliduser': u'zabbix', u'errcode': 0, u'errmsg': u'ok'}

Zabbix基于微信发警报

到此我们就配置好了。

Zabbix配置

查看存放的脚本

[root@node1~]#grep "AlertScriptsPath" /etc/zabbix/zabbix_server.conf

### Option: AlertScriptsPath
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts

[root@node1~]#mv wechat /usr/lib/zabbix/alertscripts/

在地址栏输入:http://192.168.4.61/zabbix/zabbix.php?action=mediatype.edit

Zabbix基于微信发警报

Zabbix基于微信发警报

Zabbix基于微信发警报

Zabbix基于微信发警报

发送警报信息内容:
故障恢复信息:
服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!

{
"告警主机":"{HOST.NAME}",
"告警地址":"{HOST.IP}",
"告警时间":"{EVENT.DATE} {EVENT.TIME}",
"恢复时间":"{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}",
"告警等级":"{TRIGGER.SEVERITY}",
"告警信息":"{TRIGGER.NAME}",
"监控项目":"{ITEM.NAME}",
"当前状态":"{TRIGGER.STATUS}",
"持续时间":"{EVENT.AGE}",
"事件ID":"{EVENT.ID}",
"监控ID":"{ITEM.ID}",
"监控取值":"{ITEM.LASTVALUE}"
}
发生故障发送的信息
服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!

{
"告警主机":"{HOST.NAME}",
"告警地址":"{HOST.IP}",
"告警时间":"{EVENT.DATE} {EVENT.TIME}",
"告警等级":"{TRIGGER.SEVERITY}",
"告警信息":"{TRIGGER.NAME}",
"监控项目":"{ITEM.NAME}",
"当前状态":"{TRIGGER.STATUS}",
"持续时间":"{EVENT.AGE}",
"事件ID":"{EVENT.ID}",
"监控ID":"{ITEM.ID}",
"监控取值":"{ITEM.LASTVALUE}"
}

测试

Zabbix基于微信发警报

小结

(1)使用微信告警,必须有CorpID、AgentId和Secret。这是建立与微信通信的措施。

(2)创建过程中,建议每一步都要测试是否成功,再进行下一步。

(3)可以指定多个用户接受信息。

转载于:https://blog.51cto.com/merit/2044543

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值