1. 程式人生 > >Zabbix通過公眾平臺企業號發送短信

Zabbix通過公眾平臺企業號發送短信

local 設置 sys src expires ces ont end mes

一、註冊企業號【體驗號】

打開頁面 http://qydev.weixin.qq.com/try?t=experience (2016年註冊的時候的連接)現在可能變了。進行註冊操作,默認有90天的期限。

技術分享

填寫相關資料後你會收到一封郵件,進行體驗賬號激活,如下圖:

技術分享

註意,這裏激活需要綁定在你的微信號上進行激活,激活後會有如下顯示:

技術分享

技術分享

掃描完成後,進入登陸界面,這裏的登陸信息就是你剛剛註冊用的郵箱和密碼,登入:

技術分享

二、配置企業號

進入企業號後,需要進行相關配置:

A、導入用戶

選擇通訊錄,進入我的企業,添加子部門,我這裏添加運維平臺部。

技術分享

添加部門後,進行成員添加,也就是後續會受到微信的成員了。

技術分享

新增成員信息填寫:

技術分享

這裏關機是身份驗證信息部分,一定要準確。

B、邀請關註

填寫成員後,需要進行要求關註,微信受到邀請鏈接後,即進行關註。

技術分享

技術分享

技術分享

技術分享

技術分享

D、設定管理員

指定應用的管理員。點擊設置-> 權限管理 -> 管理 -> 新建管理組 --> 添加管理員和權限。

技術分享

技術分享

三、API測試

有了前面的corpID和Sectet後,可以根據官方文檔進行API測試。

A.文檔閱讀鏈接

http://qydev.weixin.qq.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5

我只讀了建立連接、管理通訊錄、發送消息。

B、建立連接獲取access_token。

這個token是一個有有效時間的密鑰用於後續操作認證。

Https請求方式: GET

https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=id&corpsecret=secrect

正常情況下就會反饋一個json並得到access_token

C、API測試

技術分享

可以進行很多測試,不過這裏需要用到上面提到的corpID和Secret。

我這裏只要發送報警短信,而且是文本格式的,所以就只需要進行發送消息測試就OK了。

技術分享

然後就坐等微信受到消息吧。

技術分享

四、編寫腳本結合API進行告警測試

編寫報警腳本,和之前通過短信網關類似,
#!/usr/local/bin/python
#fileencoding:utf-8 import sys import urllib2 import time import json import requests reload(sys) sys.setdefaultencoding(utf-8) title = sys.argv[2] # 位置參數獲取title 適用於zabbix content = sys.argv[3] # 位置參數獲取content 適用於zabbix class Token(object): # 獲取token def __init__(self, corpid, corpsecret): self.baseurl = https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}.format( corpid, corpsecret) self.expire_time = sys.maxint def get_token(self): if self.expire_time > time.time(): request = urllib2.Request(self.baseurl) response = urllib2.urlopen(request) ret = response.read().strip() ret = json.loads(ret) if errcode in ret.keys(): print >> ret[errmsg], sys.stderr sys.exit(1) self.expire_time = time.time() + ret[expires_in] self.access_token = ret[access_token] return self.access_token def send_msg(title, content): # 發送消息 corpid = "88888888888888" # 填寫自己應用的 corpsecret = "88888888888888888888888" # 填寫自己應用的 qs_token = Token(corpid=corpid, corpsecret=corpsecret).get_token() url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={0}".format( qs_token) payload = { "touser": "@all", "msgtype": "text", "agentid": "4", "text": { "content": "{0}\n {1}".format(title, content) }, "safe": "0" } ret = requests.post(url, data=json.dumps(payload, ensure_ascii=False)) print ret.json() if __name__ == __main__: # print title, content   send_msg(title, content)

腳本命名為wexin_sendms.py,存放位置為zabbix報警目錄,我這裏為

/usr/lib/zabbix/alertscripts,具體設置在zabbix_server裏進行設置。然後在zabbix的web界面進行配置。

技術分享

技術分享

技術分享

測試微信報警接收,我這裏停掉了線上一臺puppetmaster的agnet服務,會報出一個5分鐘不可達報警。

技術分享

技術分享

至此,微信告警測試完畢。

Zabbix通過公眾平臺企業號發送短信