zabbix 報警方式之 微信公眾號報警(5)


一、條件

  首先你得有一個微信公眾號,並且是可以有發送消息的接口。然后你得有個腳本去調用微信的api。

  這里感謝一下微信。使我們運維人員的報警方式多了一種。。。 (同事們不要怪我哈。)

  之后可以參考下zabbix 的搭建,然后了解下腳本報警,之后再考慮報警方式的多樣化。

二、申請公眾號:

  1.申請頁面:

  

  2.申請時記得選擇團隊。

  3.在組織架構中,新建二級組,並添加相關人員,注意添加人員的賬號要記清楚。后期zabbix發送郵件時需要填寫用戶名。(悄悄告訴你,也可以填寫@all 哦。)

  4.這里有個組的ID:2,這個很重要哈。

  5.新建應用,應用類型選擇消息型

  6.選擇部門

  7.下面是我新建的應用權限。

 

  8.現在去設置-->功能設置-->權限管理,最重要的是CorpID,Secret 兩個密鑰,后期腳本里會利用它倆生成一個token ,然后利用token 去發送消息,具體參見微信接口文檔:http://qydev.weixin.qq.com/debug

 

  9.下面是開始微信的腳本上場了,額,具體的來源我忘記是哪個網站弄來的了。等找到后再放上鏈接。
三、微信腳本:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib,urllib2,json
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )

class WeChat(object):
        __token_id = ''
        # init attribute
        def __init__(self,url):
                self.__url = url.rstrip('/')
                self.__corpid = '你的Corpid'
                self.__secret = '你的SecretID'

        # Get TokenID
        def authID(self):
                params = {'corpid':self.__corpid, 'corpsecret':self.__secret}
                data = urllib.urlencode(params)

                content = self.getToken(data)

                try:
                        self.__token_id = content['access_token']
                        # print content['access_token']
                except KeyError:
                        raise KeyError

        # Establish a connection
        def getToken(self,data,url_prefix='/'):
                url = self.__url + url_prefix + 'gettoken?'
                try:
                        response = urllib2.Request(url + data)
                except KeyError:
                        raise KeyError
                result = urllib2.urlopen(response)
                content = json.loads(result.read())
                return content

        # Get sendmessage url
        def postData(self,data,url_prefix='/'):
                url = self.__url + url_prefix + 'message/send?access_token=%s' % self.__token_id
                request = urllib2.Request(url,data)
                try:
                        result = urllib2.urlopen(request)
                except urllib2.HTTPError as e:
                        if hasattr(e,'reason'):
                                print 'reason',e.reason
                        elif hasattr(e,'code'):
                                print 'code',e.code
                        return 0
                else:
                        content = json.loads(result.read())
                        result.close()
                return content

        # send message
        def sendMessage(self,touser,message):

                self.authID()

                data = json.dumps({
                        'touser':touser,
                        'toparty':"2",
                        'msgtype':"text",
                        'agentid':"2",
                        'text':{
                                'content':message
                        },
                        'safe':"0"
                },ensure_ascii=False)

                response = self.postData(data)
                print response


if __name__ == '__main__':
        a = WeChat('https://qyapi.weixin.qq.com/cgi-bin')
        a.sendMessage(sys.argv[1],sys.argv[3])

  注意:需要修改4處:

    1.14行、15行

    2.65行、67行  

  說明下,67行是你的組部門id號,agentid是你應用id號。。。。 記得修改腳本權限,屬主,放到和mail.sh同級目錄下。

  我們來測試下哇

[root@zabbix-6 alertscripts]# ./weixin.py hanyifeng test test
{u'errcode': 0, u'errmsg': u'ok'}

 

四、測試微信報警

  1.添加媒介這步驟就不說了,和之前添加腳本方式一樣。不會的可以參考前面的文章哈。


  2.下面把10.8.0.13這台主機的zabbix-agent服務關掉。看下你的微信吧

本文章屬於本作者原創,遵循開源協議,如有轉載,請注明本鏈接的源地址。謝謝    繼續更新中!!

如果遇到問題或者故障了,可以留言哈,一起學習進步。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM