我正在尝试使用 python 收集系统统计信息。主要是在寻找已经这样做的 libery 或 github 项目。我希望能够收集/记录以下内容。
- CPU 使用率和/或平均负载
- 磁盘可用空间
- 磁盘 IO 吞吐量
- Ram 使用情况(免费、活动、缓存)
- 网络 IO
- 使用带宽d
- 正常运行时间
- 在服务器监控中任何其他有用的东西。
编辑:我主要是在 Linux 系统中寻找支持,稍后我将转向 Windows 系统。
我正在尝试使用 python 收集系统统计信息。主要是在寻找已经这样做的 libery 或 github 项目。我希望能够收集/记录以下内容。
编辑:我主要是在 Linux 系统中寻找支持,稍后我将转向 Windows 系统。
尝试在此处使用 psutil 模块,看看显示的示例。但是,DISK IO
您可能必须使用wmi
和pywin32
模块。
例如,对于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)
它使用 Windows 上 perfmon 应用程序的计数器。对于 linux,有多种 DISK IO 工具。
对于 linuxDISK 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
我希望这有帮助。:)