python監控 python 監控服務

2021-10-12 12:01:26 字數 2191 閱讀 3125

最近寫了乙個web測試程式,因為部署在其他地方,所以想弄個監控的程序去看服務是不是還在,要是不在好發郵件,就用python簡單的寫了乙個。

當然,有的時候也要考慮到監控程序本身就掛了,或者不想監控了。

首先監控指令碼是這樣,很簡單:

monitor.py

#-*-coding

'''簡單的monitor函式,主要監控乙個遠端服務是否還在

system 是乙個系統model'''

importtimeimportsysdefmonitor(system):

last_monitor_status=true

timeinterval=10

whiletrue:

is_active=check_system_status(system.env.env_ip,system.env.env_port,\

system.env.get_env_path())if is_active==false and last_monitor_status==true:'''system is down,do something'''

pass

elif is_active==true and last_monitor_status==false:'''system revover'''

pass

else:passlast_monitor_status=is_active

time.sleep(timeinterval)if __name__=="__main__":

system=sys.ar**[1]

monitor(system)

然後是監控的一些操作

control.py

#-*-coding:utf-8

importsubprocessimportosdefstartmonitor(system):'''通過subprocess去啟動監控'''monitorprocess=subprocess.popen(["python","monitor.py","".format(system)],\

shell=false,stdout=subprocess.pipe,stderr=subprocess.pipe)

output,error=monitorprocess.communicate(input=none)iferror:raiseruntimeerror,error

pid=monitorprocess.pidreturntruedefstopmonitor(pid):

kill_result=

kill_status=os.system("kill -9 ".format(pid))returnkill_result[kill_status]defcheckmonitorprocess(pid):

systemcmd="ps -ef|grep -v ''|awk ''|grep ".\

format(pid)

monitorstatus=os.system(systemcmd)return monitorstatus

用的話還是可以用的,服務發生異常都會傳送郵件,在實際執行中遇到過這樣的問題

1.通過subprocess去啟動monitor指令碼的時候,本來想通過comunicate()方法獲取output和error,如果啟動失敗,丟擲異常,確實當error有值的時候,會丟擲異常,但是當

error沒有的時候,本來應該正常啟動監控,但是實際上通過瀏覽器啟動的時候,本來啟動成功了,瀏覽器也載入完成,但是瀏覽器的http請求好像一直連著,當去掉communicate()方法後

又可以立即啟動,並且瀏覽器http載入完成,這個問題很苦惱,難道是因為我monitor指令碼是一直迴圈執行的原因嗎?但是我monitor是單獨啟動乙個程序去執行的,應該沒什麼關係麼

2.就是當我中止監控程序,想要檢查程序還在的時候,因為我是用kill -9 pid去殺程序,然後判斷程序號是不是還在,但是實際上當你立刻殺死程序的時候,還會有乙個的死程序在,要過會才會被**,所以通過grep去判斷的時候,要過濾掉這個。

ps:我猜這個程序應該是類似孤兒程序之類的吧,父程序被殺了,變孤兒了,然後過會由init**了。殭屍程序好像是子程序完成任務了,然後傳送訊息給父程序,但是父程序沒搭理,本來父程序退出以後,子程序也就退出了,但是偏偏父程序是乙個一直執行的程序,就導致了子程序沒事做,但又沒被**,就變成了殭屍程序,可以看出殭屍程序不幹活了,但是過多的話還是會占用資源,想要避免殭屍程序的乙個辦法就是把殭屍變成孤兒,要init去**。

python 系統監控

import yagmail import psutil def sendmail subject,contents 連線郵箱伺服器 yag yagmail.smtp user 郵箱位址 password 授權密碼 host smtp.163.com 傳送郵件 yag.send to 接收的郵箱位址...

turbine聚合監控 監控服務間呼叫和監控熔斷

hystrixdashboard 主要的功能是可以針對於某一項微服務進行監控,但是如果說現在有許多的微服務需要進行整體的監控,那 麼這種情況下就可以利用 turbine 技術來實現。com.netflix.turbine.monitor.instance.instancemonitor miscon...

python效能監控工具 Python效能監控

profiler是乙個程式,用來描述執行時的程式效能,並且從不同方面提供統計資料加以表述。python中含有3個模組提供這樣的功能,分別是cprofile,profile和pstats。這些分析器提供的是對python程式的確定性分析。同時也提供一系列的報表生成工具,允許使用者快速地檢查分析結果。p...