linux服務監(jiān)控及運維
一, 安裝psutil 包
1.1、安裝壓縮包:以root身份登陸CentOS依次 執(zhí)行以下命令:
wget https://pypi.python.org/packages/source/p/psutil/psutil-2.1.3.tar.gz
如果wget 下不下來,則直接在瀏覽器中復制 粘貼鏈接https://pypi.python.org/packages/source/p/psutil/psutil-2.1.3.tar.gz 下載下來,用ftp傳輸工具傳輸?shù)絣inux上,然后再進行下面的操作
1.2 解壓: tar zxvf psutil-2.1.3.tar.gz
1.3 進入解壓完的目錄:cd psutil-2.1.3/
1.4 啟動安裝: python3 setup.py install
1.5 驗證: 在命令窗口輸入 python3,然后 輸入 :
import psutil 不報錯,則證明安裝 成功
接著輸入:
res = psutil.process_iter() for var in res: print(var)
則會顯示一堆信息
二,找到操作系統(tǒng)中所有的服務的name和pid
import psutil proc_dict = {} #ID:進程名 proc_name = set() #關(guān)于進程的集合,集合去重 for p in psutil.process_iter(): proc_dict[p.pid] = p.name() proc_name.add(p.name()) print(proc_dict) print('\n\n--------------------------\n') print(proc_name)
三,找到需要監(jiān)控但沒有啟動的服務
proc_stop = monitor_name - proc_name
即:需要監(jiān)控的服務name 減去 操作系統(tǒng)中所有服務的name
四,監(jiān)控服務,如果沒有開啟則自動開啟,[并發(fā)郵件通知工作人員]
1.使用os.system(命令)啟用 服務。
完整代碼如下:
import psutil import os #如果需要發(fā)郵件給通知管理人員可能需要使用 request 和 json #import request #import json import time time_now = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()) #要監(jiān)控的服務 monitor_name = {'nginx'} #啟動命令 monitor_map = {'nginx':'service nginx start'} while True: #操作系統(tǒng)中所有進程的字典 proc_dict = {} #操作系統(tǒng)中所有的進程名集合 proc_name = set() #psutil.process_iter()會返回操作系統(tǒng)下所有進程名及進程ID for p in psutil.process_iter(): proc_dict[p.pid] = p.name() proc_name.add(p.name()) print(proc_dict) print('\n\n--------------------------\n') print(proc_name) # monitor_name - proc_name == died process name #提取到那個監(jiān)控進程沒有啟動 proc_stop = monitor_name - proc_name print(proc_stop) if proc_stop: for p in proc_stop: p_status = '停止' p_name = p data ={p_status,p_name,time_now} headers = {'Content-Type':'application/json;charset=utf-8'} #send_data = json.dumps(data).encode('utf-8') #發(fā)郵件給管理人員 #request.post(url=url,data=send_data,headers=headers) os.system(monitor_map[p]) proc_name = set() for p2 in psutil.process_iter(): proc_name.add(p2.name()) if p in proc_name: print("重啟成功") else: print("重啟失敗") time.sleep(2000)
運行之后的效果:
到此這篇關(guān)于linux服務監(jiān)控及運維的文章就介紹到這了,更多相關(guān)linux服務內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
寶塔Linux面板之好用免費的中文Linux VPS主機控制面板適合快速建站
本篇文章主要介紹了寶塔Linux面板之好用免費的中文Linux VPS主機控制面板適合快速建站,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07嵌入式Linux開發(fā)環(huán)境搭建ping、nfs的解決方法
在本篇文章里小編給大家整理了關(guān)于嵌入式Linux開發(fā)環(huán)境搭建ping、nfs的解決方法,需要的朋友們學習參考下。2019-07-07CentOS 6.3 安裝配置Apache2.2.6的方法(源碼編譯安裝)
這篇文章主要介紹了CentOS 6.3 安裝配置Apache2.2.6的方法,需要的朋友可以參考下2014-11-11Linux、ubuntu系統(tǒng)下查看顯卡型號、顯卡信息詳解
這篇文章主要介紹了如何在Linux、ubuntu系統(tǒng)下查看顯卡型號、顯卡信息的方法,需要的朋友可以參考下2022-04-04linux下通過xinetd服務管理 rsync 實現(xiàn)開機自啟動
這篇文章主要介紹了linux下通過xinetd服務管理 rsync 實現(xiàn)開機自啟動的相關(guān)資料,需要的朋友可以參考下2017-10-10linux確認已經(jīng)卸載數(shù)據(jù)盤并可以新建自定義鏡像
在本文中我們給大家整理了關(guān)于linux中如何確認已經(jīng)卸載數(shù)據(jù)盤并可以新建自定義鏡像的相關(guān)內(nèi)容和知識點,有需要的朋友們學習下。2018-09-09