1. 程式人生 > 其它 >根據pid定時監控CPU使用率和記憶體使用率並輸出到檔案 (windows和linux跨平臺可用)

根據pid定時監控CPU使用率和記憶體使用率並輸出到檔案 (windows和linux跨平臺可用)

    有時伺服器運維中,某些程式設計師的應用釋出後完全不管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)