首頁 >微信小程式 >微信開發 >Python+微信介面實作運維警報

Python+微信介面實作運維警報

高洛峰
高洛峰原創
2017-01-17 09:45:581820瀏覽

說到維運報警,我覺得都可以寫個長篇歷史來詳細解釋了報警的前世來生,比如最早報警都是用郵件,但郵件實時性不高,比如下班回家總不能人一直盯著郵箱吧,所以郵件這種警報方式不適合用來報緊急的故障,日常磁碟利用率監控什麼的可以用它來報沒問題,網站宕機不能訪問這種故障,用它就明顯不合適了,那對這種業務穩定性要求比較高的業務,後來就發展成了用短信,就是公司買個短信機,提供一個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可操作的資料型,關於如何呼叫微信發訊息這篇就寫到這裡,歡迎大家留言交流。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn