用python寫一個預警機器人(支援微信
- 2020 年 1 月 16 日
- 筆記
背景
線上的系統在運行中,發生故障時怎麼及時的通過手機通知到相關人員?當然這是個很簡單的需求,現有的方法有很多,例如:
如果我們用的雲產品,那麼一般都會有配套對應的監控預警功能,根據需要配置一下即可,支援簡訊,郵箱通知。
如果我們已經搭建了一套運維監控系統,比如zabbix之類的,那麼我們學會zabbix,然後配置也即可,支援簡訊,郵箱通知。
…
但如果我們希望有一個比較簡單輕便,能靈活訂製和快速實施的方法,又能同時支援微信和釘釘通知呢?以下就介紹這樣一個基於python的簡單方法,暫且起個名字叫robotprobe。
上路
在開始之前,先定義兩種對象,robotprobe將由這兩種對象組成。
Probe:探針,用於檢查檢測某項功能,某個指標是否正常,並包含預警相關規則配置。
Robot:機器人,發生異常情況時,要發送通知的對象,這裡特指微信機器人和釘釘機器人。
Probe

UrlProbe

SqlProbe

其他
其他類型的Probe則可以根據實際需要自由擴展實現。

WechatRobot

DingTalkRobot

微信VS釘釘
微信機器人基於wxpy實現,wxpy功能很豐富,基本微信上收發消息相關的功能都可以用它來實現,這篇文章有個挺好的使用示例,我們這裡只用到發送消息的功能,微信雖然功能,但有個缺點就是用wxpy發消息(其實是網頁版微信),帳號有可能被封,另外新註冊的微訊號也是不能用的。
釘釘機器人基於DingtalkChatbot實現,優點就是官方默認提供機器人的功能,雖然發消息有限制,但一可以控制發消息的頻率,二也可加多個機器人去分流,缺點就是只能發消息,不收消息,進而根據收到的消息做訂製回復。

依賴
certifi==2019.3.9
chardet==3.0.4
DingtalkChatbot==1.3.0
future==0.17.1
idna==2.8
itchat==1.2.32
PyMySQL==0.9.3
pypng==0.0.19
PyQRCode==1.2.1
requests==2.21.0
requests-toolbelt==0.9.1
schedule==0.6.0
urllib3==1.24.1
wxpy==0.3.9.8