說到維運報警,我覺得都可以寫個長篇歷史來詳細解釋了報警的前世來生,比如最早報警都是用郵件,但郵件實時性不高,比如下班回家總不能人一直盯著郵箱吧,所以郵件這種警報方式不適合用來報緊急的故障,日常磁碟利用率監控什麼的可以用它來報沒問題,網站宕機不能訪問這種故障,用它就明顯不合適了,那對這種業務穩定性要求比較高的業務,後來就發展成了用短信,就是公司買個短信機,提供一個http接口,然後運維人員寫腳本把收集到的異常數據寫入文件,然後腳本即時偵測如果這個檔案不為空,就呼叫簡訊機介面把檔案裡的內容傳送出去,這種簡訊的警報方式持續了幾年,現在轉眼到了行動端時代,隨著微信的橫空出世,這種簡訊的方式現在也慢慢轉變了,為啥呢?最簡單的1條,因為這玩意有成本,用不是白用的,每月就要交短信費的,如果你說這短信費用能有多少,1條不就1毛嗎,但你想想如果機器規模發展到上萬台的公司,每台伺服器依照按從底層硬體監控、系統層監控、應用層這三個維度去部署監控腳本,這裡每項都又分為N個細小項,可想而知每天發的短信數會多麼恐怖,當然了這驚人的數據裡還有一部分是無效報警,但一樣得付錢呀,每月領導批錢的時候都會被報警短信數量所震驚,然後感嘆一下就回覆了OK,所以說在沒有更好的方法前,這種方式有成本但為了業務穩定也必須要投入,但現在微信來了,直接宣布利用我這個平台發訊息免費,因為終端還是手機,及時性又沒有降低,成本又沒有,沒有不用的道理,所以這篇咱們就來看看如何調微信介面來實現日常運維訊息的警報。
首先,你要去註冊一個微信企業號,地址是:https://qy.weixin.qq.com/cgi-bin/loginpage
註冊過程如果是為企業使用要選擇企業,然後上傳企業的資格證明,如果是個人註冊,選擇團隊,然後輸入自己的身份證號即可完成註冊,其它關鍵步驟在註冊過程中已經提示的很清楚了,比如企業號的名字不能修改等。
註冊完進入第二步,在應用中心新建一個應用,例如:維運警報,然後在設定–功能設定–權限管理中點選左邊的維運警報應用,在右邊會出現CorpID和Secret,這個要記好,腳本中會用到,然後「應用程式權限「」選擇維運警報這個應用,「」通訊錄權限「」選擇可讀,到這裡企業號的在平台上的設定完畢,接下來進入程式碼步驟。得到了這個token後才能發訊息,所以我們的腳本分2部分,第一要獲取token,第二是發訊息,程式碼如下:
#! /usr/bin/env python import requests import json def get_token(): url='https://qyapi.weixin.qq.com/cgi-bin/gettoken' values = {'corpid' : 'your corpid' , 'corpsecret':'your corpsecret', } req = requests.post(url, params=values) data = json.loads(req.text) return data["access_token"] def send_msg(): url="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token="+get_token() values = """{"touser" : "1" , "toparty":"1", "msgtype":"text", "agentid":"1", "text":{ "content": "%s" }, "safe":"0" }""" %(str("10.1.1.8 is down")) data = json.loads(values) req = requests.post(url, values) if __name__ == '__main__': send_msg()
腳本用到了第三方模組requests, 這個模組要比python標準模組urllib,urllib2,更為簡潔,可以直接用get(), post(),put(), delete(), head() ,options(),方法對url操作,json模組就是來解析傳回的json串,轉換成python可操作的資料型,關於如何呼叫微信發訊息這篇就寫到這裡,歡迎大家留言交流。