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

1、條件python

  首先你得有一個微信公衆號,而且是能夠有發送消息的接口。而後你得有個腳本去調用微信的api。json

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

  以後能夠參考下zabbix 的搭建,而後瞭解下腳本報警,以後再考慮報警方式的多樣化。微信

2、申請公衆號:架構

  1.申請頁面:運維

  

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

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

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

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

  6.選擇部門

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

 

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

 

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

#!/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'}

 

4、測試微信報警

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


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

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

若是遇到問題或者故障了,能夠留言哈,一塊兒學習進步。

相關文章
相關標籤/搜索