Python收集系统统计数据

Python收集系统统计数据,python,statistics,Python,Statistics,我正在尝试使用python收集系统统计数据。主要是寻找一个libery或github项目,它已经做到了这一点。我希望能够收集/记录以下内容 CPU使用率和/或平均负载 磁盘可用空间 磁盘IO输出 Ram使用率(免费、活动、缓存) 网络IO 使用的带宽 正常运行时间 在服务器监视中还有什么有用的吗 编辑: 我主要是在寻找Linux系统的支持,稍后我将转到windows系统。尝试使用psutil模块,查看所示示例。但是,对于磁盘IO,您可能必须使用wmi和pywin32模块 例如,对于使用win

我正在尝试使用python收集系统统计数据。主要是寻找一个libery或github项目,它已经做到了这一点。我希望能够收集/记录以下内容

  • CPU使用率和/或平均负载
  • 磁盘可用空间
  • 磁盘IO输出
  • Ram使用率(免费、活动、缓存)
  • 网络IO
  • 使用的带宽
  • 正常运行时间
  • 在服务器监视中还有什么有用的吗
编辑:
我主要是在寻找Linux系统的支持,稍后我将转到windows系统。

尝试使用psutil模块,查看所示示例。但是,对于
磁盘IO
,您可能必须使用
wmi
pywin32
模块

例如,对于使用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)
它使用windows上perfmon应用程序的计数器。对于linux,有多种用于磁盘IO的工具

对于linux
磁盘IO
签出
iotop

同样,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

我希望这有帮助。:)

这些都有linux支持吗?我相信psutil是linux的主流,但是
wmi
pywin32
是windows的。