2018-4-26 Python實現對服務進程的監控,警示給DingTalk機器人及重啟任務

來源:互聯網
上載者:User

標籤:mil   span   html   headers   stop   分享圖片   參考   obb   article   

 

 

      最近看到一個DingTalk軟體機器人,覺得非常好,比起郵件、警示,舒服多了,特獻上代碼內容。

 

      [[email protected] ~]# nohup python test.py &      # 可以參考下篇文章,python進程構成一個systemd服務後台運行,每5秒監控更佳

 

 1 #coding: utf-8 2 import psutil 3 import requests 4 import time 5 import os 6 import json 7  8 monitor_name = set([‘httpd‘,‘cobblerd‘])  # 使用者指定監控的服務進程名稱 9 10 proc_dict = {}11 proc_name = set()  # 系統檢測的進程名稱12 monitor_map = {13     ‘httpd‘: ‘systemctl restart httpd‘,14     ‘cobblerd‘: ‘systemctl restart cobblerd‘  # 系統在進程down掉後,自動重啟15 }16 17 dingding_url = ‘https://oapi.dingtalk.com/robot/send?access_token=b5258c4335ed8ab792075013c965efcbf4f8940f92e7bd936cdc7842d3bf9405‘18 # DingTalk機器人token使用參考文檔:http://www.pc6.com/infoview/Article_108931.html19 20 while True:21     for proc in psutil.process_iter(attrs=[‘pid‘,‘name‘]):22         proc_dict[proc.info[‘pid‘]] = proc.info[‘name‘]23         proc_name.add(proc.info[‘name‘])24 25     proc_stop = monitor_name - proc_name  # 通過集合的形式來找出停掉的進程名,前者有但是後者沒有的26 27     if proc_stop: # 如果確實有監控的進程停掉了,那麼我們需要警示以及自動重啟功能28         for p in proc_stop:29             p_status = ‘停止‘30             p_name = p31             data = {32                 "msgtype": "markdown",33                 "markdown": {34                     "title": "監控資訊",35                     "text": "### %s\n" % time.strftime("%Y-%m-%d %X") +36                     "> #### 服務名:%s \n\n" % p_name +37                     "> #### 狀態:%s \n\n" % p_status +38                     "> #### 正在嘗試啟動"39                 },40             }41             headers = {‘Content-Type‘:‘application/json;charset=UTF-8‘}42             send_data = json.dumps(data).encode(‘utf-8‘)43             requests.post(url=dingding_url,data=send_data,headers=headers)44 45             os.system(monitor_map[p_name]) # 執行重啟命令,然後判斷是否重啟成功46             proc_set = set()47             for proc_again in psutil.process_iter(attrs=[‘pid‘,‘name‘]):48                 proc_set.add(proc_again.info[‘name‘])49 50             if p in proc_set: # 如果進程啟動成功,p是以前停掉的進程,proc_set是已經重啟過一次後的所有進程集合51                 p_status = ‘成功‘52                 p_name = p53                 data = {54                     "msgtype": "markdown",55                     "markdown": {56                         "title": "監控資訊",57                         "text": "### %s\n" % time.strftime("%Y-%m-%d %X") +58                         "> #### 服務名:%s \n\n" % p_name +59                         "> #### 狀態:%s \n\n" % p_status +60                         "> #### 已經啟動成功,服務正在運行!"61                     },62                 }63                 headers = {‘Content-Type‘:‘application/json;charset=UTF-8‘}64                 send_data = json.dumps(data).encode(‘utf-8‘)65                 requests.post(url=dingding_url,data=send_data,headers=headers)66             else:67                 p_status = ‘重啟失敗‘68                 p_name = p69                 data = {70                     "msgtype": "markdown",71                     "markdown": {72                         "title": "監控資訊",73                         "text": "### %s\n" % time.strftime("%Y-%m-%d %X") +74                         "> #### 服務名:%s \n\n" % p_name +75                         "> #### 狀態:%s \n\n" % p_status +76                         "> #### Sorry,服務啟動失敗鳥!"77                     },78                 }79                 headers = {‘Content-Type‘:‘application/json;charset=UTF-8‘}80                 send_data = json.dumps(data).encode(‘utf-8‘)81                 requests.post(url=dingding_url,data=send_data,headers=headers)82     time.sleep(5)

 

 

                              DingTalk軟體結果圖片

 

2018-4-26 Python實現對服務進程的監控,警示給DingTalk機器人及重啟任務

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.