linux服務(wù)監(jiān)控及運(yùn)維
一, 安裝psutil 包
1.1、安裝壓縮包:以root身份登陸CentOS依次 執(zhí)行以下命令:
wget https://pypi.python.org/packages/source/p/psutil/psutil-2.1.3.tar.gz
如果wget 下不下來,則直接在瀏覽器中復(fù)制 粘貼鏈接https://pypi.python.org/packages/source/p/psutil/psutil-2.1.3.tar.gz 下載下來,用ftp傳輸工具傳輸?shù)絣inux上,然后再進(jìn)行下面的操作
1.2 解壓: tar zxvf psutil-2.1.3.tar.gz
1.3 進(jìn)入解壓完的目錄:cd psutil-2.1.3/
1.4 啟動(dòng)安裝: python3 setup.py install
1.5 驗(yàn)證: 在命令窗口輸入 python3,然后 輸入 :
import psutil 不報(bào)錯(cuò),則證明安裝 成功
接著輸入:
res = psutil.process_iter() for var in res: print(var)
則會(huì)顯示一堆信息
二,找到操作系統(tǒng)中所有的服務(wù)的name和pid
import psutil
proc_dict = {}
#ID:進(jìn)程名
proc_name = set()
#關(guān)于進(jì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)控但沒有啟動(dòng)的服務(wù)
proc_stop = monitor_name - proc_name
即:需要監(jiān)控的服務(wù)name 減去 操作系統(tǒng)中所有服務(wù)的name
四,監(jiān)控服務(wù),如果沒有開啟則自動(dòng)開啟,[并發(fā)郵件通知工作人員]
1.使用os.system(命令)啟用 服務(wù)。
完整代碼如下:
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)控的服務(wù)
monitor_name = {'nginx'}
#啟動(dòng)命令
monitor_map = {'nginx':'service nginx start'}
while True:
#操作系統(tǒng)中所有進(jìn)程的字典
proc_dict = {}
#操作系統(tǒng)中所有的進(jìn)程名集合
proc_name = set()
#psutil.process_iter()會(huì)返回操作系統(tǒng)下所有進(jìn)程名及進(jìn)程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
#提取到那個(gè)監(jiān)控進(jìn)程沒有啟動(dòng)
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)
運(yùn)行之后的效果:

到此這篇關(guān)于linux服務(wù)監(jiān)控及運(yùn)維的文章就介紹到這了,更多相關(guān)linux服務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
讓Apache支持shtml實(shí)現(xiàn)include文件解析的配置方法
Apache支持include文件解析shtml首先要應(yīng)該修改Apache配置文件httpd.conf2011-03-03
使用nginx來負(fù)載均衡 本文在window與linux下配置nginx實(shí)現(xiàn)負(fù)載
使用nginx來負(fù)載均衡,本文在window與linux下配置nginx實(shí)現(xiàn)負(fù)載2010-03-03
移植busybox構(gòu)建最小根文件系統(tǒng)的步驟詳解
這篇文章主要介紹了移植busybox構(gòu)建最小根文件系統(tǒng)的步驟,本文分為五部給大家介紹的非常詳細(xì),需要的朋友可以參考下2019-07-07
Linux進(jìn)程信號(hào)的發(fā)送和保存方法
從信號(hào)產(chǎn)生到信號(hào)保存,中間經(jīng)歷了很多,當(dāng)操作系統(tǒng)準(zhǔn)備對信號(hào)進(jìn)行處理時(shí),還需要判斷時(shí)機(jī)是否 “合適”,在絕大多數(shù)情況下,只有在 “合適” 的時(shí)機(jī)才能處理信號(hào),即調(diào)用信號(hào)的執(zhí)行動(dòng)作,本文將給大家介紹Linux進(jìn)程信號(hào)的發(fā)送和保存方法,需要的朋友可以參考下2025-04-04
修改ubuntu 18.04的sources.list源為阿里或清華鏡像的方法
這篇文章主要介紹了修改ubuntu 18.04的sources.list源為阿里或清華鏡像的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
JVM上高性能數(shù)據(jù)格式庫包Apache Arrow入門和架構(gòu)詳解(Gkatziouras)
Apache Arrow是是各種大數(shù)據(jù)工具(包括BigQuery)使用的一種流行格式,它是平面和分層數(shù)據(jù)的存儲(chǔ)格式,今天給大家介紹JVM上高性能數(shù)據(jù)格式庫包Apache Arrow入門和架構(gòu)介紹,感興趣的朋友一起看看吧2021-05-05

