我們在監(jiān)控線上運行的項目時稚矿,一旦遇到異常,通常的做法會發(fā)郵件捻浦、短信至開發(fā)團(tuán)隊晤揣。
以郵件的方式來說,消息具有滯后性朱灿,不可能無時無刻的都盯著郵箱昧识,盡管可以選擇郵箱客戶端,但總感覺郵件的方式敏感度不高盗扒。
以短信的方式來說跪楞,更多的可能會考慮到成本問題缀去。短信都是需要付費的,當(dāng)監(jiān)控場景增加或者接受報警人數(shù)增加時甸祭,都會帶來成本的增加缕碎。
這里,推薦一個比較不錯的解決方案 -- 企業(yè)微信池户。對于企業(yè)微信來說咏雌,優(yōu)點也很明顯,消息實時度強(qiáng)煞檩,成本低处嫌,靈活性高,跨平臺。接入企業(yè)微信后斟湃,可以不修改代碼靈活增減被通知人員。
配置企業(yè)微信
-
注冊企業(yè)微信
個人也可以注冊企業(yè)微信檐薯,不提交企業(yè)資料可以,可以容納200個成員。如果團(tuán)隊不大的話冕臭,完全可以不提交企業(yè)資料胡诗。
-
創(chuàng)建應(yīng)用
創(chuàng)建一個應(yīng)用,服務(wù)于你自己的監(jiān)控報警赚楚。每一個應(yīng)用都包含以下功能毙沾。
監(jiān)控報警來說,只需要使用發(fā)送消息的功能宠页。每個應(yīng)用都會自己的AgentId
和Secret
左胞,后面調(diào)用API的時候需要用到。 -
添加成員
向剛才的創(chuàng)建的應(yīng)用中添加被通知人員举户。當(dāng)然前提是已經(jīng)加入該企業(yè)微信烤宙。
接入程序
企業(yè)微信的API,調(diào)用本質(zhì)上就是調(diào)用Http post
請求俭嘁,所以各個語言平臺都適用躺枕。具體說明可以參照文檔:API文檔。這里以python
為例供填,實現(xiàn)的是企業(yè)微信的發(fā)送消息接口拐云。
- 獲取
token
tokenUrl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
def get_token():
values = {'corpid': 'xxxxx', 'corpsecret': 'xxxxx'}
req = requests.post(tokenUrl, params=values)
data = json.loads(req.text)
return data["access_token"]
這里需要填寫企業(yè)微信的corpid
和corpsecret
。
- 發(fā)送消息
sendMsg = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token="
def send_msg(msg):
url = sendMsg + get_token()
values = """{"touser" : "XXX" ,
"msgtype":"text",
"agentid":"XXX",
"text":{
"content": "%s"
},
"safe":"0"
}""" % msg
requests.post(url, values)
發(fā)送消息的時候需要配置touser
和agentid
近她。touser
被通知用戶的賬戶叉瘩,在企業(yè)通訊錄可以查看用戶的賬戶名,多個以|
間隔泄私。如果是所有用戶則直接填寫@all
房揭。agentid
為應(yīng)用的agentid
备闲。
當(dāng)我在程序中中需要捕獲異常時或者監(jiān)控需要發(fā)送通知時,直接調(diào)用send_msg
就可以向我們發(fā)送通知了捅暴。
if __name__ == '__main__':
try:
1 / 0
except ZeroDivisionError, e:
send_msg(e.args[0])
寫完恬砂,怎么越看越像企業(yè)微信的軟文...... ㄟ( ▔, ▔ )ㄏ