2012-12-02 174 views
2

我想使用python收集系統統計信息。主要是尋找一個libery或github項目,它已經做到了。我期望能夠收集/記錄下列事情。Python收集系統統計信息

  • CPU使用率和或平均負載
  • 磁盤可用空間
  • 磁盤IO thoughput
  • RAM的使用(自由,積極,緩存)
  • 網絡IO
  • 帶寬Usaged
  • 正常運行時間
  • 在服務器監控中還有其他任何用處。

編輯: 我主要在Linux系統尋找支持,我將在稍後轉入Windows系統。

回答

2

嘗試使用psutil模塊here,看看示例。但是,對於DISK IO,您可能必須使用wmipywin32模塊。

例如,對於DISK QUEUE LENGTH與Windows使用此:

from win32pdh import * 
import time 

while True: 
    path = MakeCounterPath((None,"PhysicalDisk","_Total",None,0,"Avg. Disk Queue Length"),0) 
    query_handle = OpenQuery() 
    counter_handle = AddCounter(query_handle, path) 
    query_handle = OpenQuery() 
    counter_handle = AddCounter(query_handle, path) 
    CollectQueryData(query_handle) 
    time.sleep(2) 
    CollectQueryData(query_handle) 
    (counter_type, value) = GetFormattedCounterValue(counter_handle, PDH_FMT_DOUBLE) 
    print value 
    CloseQuery(query_handle) 

它使用性能監視器應用程序的櫃檯上窗戶。對於Linux,有多種磁盤IO工具。

在LINUX DISK IO退房iotophere

此外,例如Linux的diskstats的使用,它會定期解析/proc/diskstats

def diskstats_parse(dev=None): 
    file_path = '/proc/diskstats' 
    result = {} 

    # ref: http://lxr.osuosl.org/source/Documentation/iostats.txt 
    columns_disk = ['m', 'mm', 'dev', 'reads', 'rd_mrg', 'rd_sectors', 
        'ms_reading', 'writes', 'wr_mrg', 'wr_sectors', 
        'ms_writing', 'cur_ios', 'ms_doing_io', 'ms_weighted'] 

    columns_partition = ['m', 'mm', 'dev', 'reads', 'rd_sectors', 'writes', 'wr_sectors'] 

    lines = open(file_path, 'r').readlines() 
    for line in lines: 
     if line == '': continue 
     split = line.split() 
     if len(split) == len(columns_disk): 
      columns = columns_disk 
     elif len(split) == len(columns_partition): 
      columns = columns_partition 
     else: 
      # No match 
      continue 

     data = dict(zip(columns_disk, split)) 
     if dev != None and dev != data['dev']: 
      continue 
     for key in data: 
      if key != 'dev': 
       data[key] = int(data[key]) 
     result[data['dev']] = data 

    return result 

我希望這有助於。 :)

+0

這些都有Linux支持。 – WojonsTech

+0

psutil是我相信大多數linux,但'wmi'和'pywin32'是用於windows的。 – enginefree