根據pid定時監控CPU使用率和記憶體使用率並輸出到檔案 (windows和linux跨平臺可用)
阿新 • • 發佈:2022-03-15
有時伺服器運維中,某些程式設計師的應用釋出後完全不管CPU和記憶體的使用率,只覺得程式碼能執行就行了,這樣給我們運維人員經常造成困擾;
比如我在zabbix平臺中就經常監測到凌晨1~3~5點時候突然CPU飆升到50~93%,win和linux系統都沒有比較方便的定時監控指定程序的方法,經過長時間的尋解、修改和測試,如下python程式碼可以實現根據pid定時監控CPU使用率和記憶體使用率,並輸出到.csv檔案,windows和linux平臺皆可用:
# 本程式可以實現根據程序的pid號,來監控CPU和記憶體使用率,並將監控結果同時打印出螢幕和檔案中。 import sys import time import psutil # 將輸入的引數pid號儲存到列表sys.argv中,若輸入的值小於2位則中斷退出並提示 if len(sys.argv) < 2: print("輸入pid值無效,請按示例輸入,例:“pyhton CPU_Analysis_Python.py pid號碼”") sys.exit() # 通過psutil模組,獲取並儲存pid對應的程序物件 pid = int(sys.argv[1]) p = psutil.Process(pid) # 監控程序相關的CPU和記憶體使用率資料,寫入儲存 interval = 5 # 設定監控的迴圈間隔時間 with open("CPU_Analysis_pid" + str(pid) + "_" + p.name() + ".csv", "a") as f: # 建立記錄輸出文件,格式為.csv f.write(" 時間 , CPU使用率(%), 記憶體使用率(%) \n") # 寫入標題——>.csv文件中 while True: current_time = time.strftime('%Y%m%d-%H:%M:%S', time.localtime(time.time())) cpu_percent = p.cpu_percent() # 計算CPU使用率的時間間隔,單位秒,如: p.cpu_percent(interval=0.5) mem_percent = p.memory_percent() line = current_time + ',' + str(cpu_percent) + ',' + str(mem_percent) print('時間:' + current_time + ', CPU使用率:' + str(cpu_percent) + ', 記憶體使用率:' + str(mem_percent)) #輸出控制檯,可登出掉 f.write(line + "\n") time.sleep(interval)