Zabbix基於微信發警報

在zabbix監控中,國內愈來愈流行使用微信、釘釘、郵件報警,這正式結合了當下的發展趨勢。接下來介紹下zabbix如何結合微信發送警報信息。

1、企業微信註冊

企業微信註冊地址:https://work.weixin.qq.com/php

Zabbix基於微信發警報

  • Zabbix基於微信發警報

Zabbix基於微信發警報

Zabbix基於微信發警報

Zabbix基於微信發警報

Zabbix基於微信發警報

Zabbix基於微信發警報

Zabbix基於微信發警報
注意:咱們須要記錄如下幾個值:node

Agentld
Secret
CorpID
部門ID

2、下載腳本

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

[root@node1~]#vim wechatjson

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 wechatvim

##驗證是否能夠發送成功
[root@node1~]#./wechat zabbix test testapi

{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/ide

在地址欄輸入:http://192.168.4.61/zabbix/zabbix.php?action=mediatype.editpost

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)能夠指定多個用戶接受信息。

相關文章
相關標籤/搜索