Chinaunix首页 | 论坛 | 博客
  • 博客访问: 32679
  • 博文数量: 14
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 151
  • 用 户 组: 普通用户
  • 注册时间: 2017-04-07 23:15
个人简介

一步一个脚印,扎扎实实投资自己。

文章分类

全部博文(14)

文章存档

2017年(14)

我的朋友

分类: WINDOWS

2017-10-17 18:04:57

背景吐槽:
       前段时间用python做系统监控,网上搜了一大把用python的psutil模块对windows的cpu及内存监控。但是发现没有网络流量的监控,并且内存监控出来的数值也对不上。
       后来发现windows自2000以后都自带了wmi接口。而python可以通过win32com模块调用windows的wmi,可以很方便的获取系统、服务、进程、网络资源等使用信息。
       而且nscp自带的check模块与python的psutil不外乎也就是调用wmi获取windows系统资源信息。因此纠结再三,还是选择自己造造轮子。


WMI简单使用介绍:
Windows Management Instrumentation: windows管理规范
WMI科普地址:

windows系统中运行wbemtest确认能调出wmi名空间界面,连接默认命名空间“root\cimv2”

连接后在"枚举类"中选递归,确定后就会列“root\cmiv2”命名空间下的所有顶级类

以顶级类“Win32_PhysicalMemory”为例:添加顶级类在弹出的实例对话框中选实例按钮,实例化其中一个内存条信息。

实例化后,在实例化对话框中选择“显示MOF”将显示对象的属性信息


python3及WMI下载安装:
python下载安装:
此处飘过,详见

wmi模块的下载安装:
地址:
解压后执行
  1. python(3) setup.py install
或使用pip自动下载安装
  1. pip(3) install wmi


win32com下载安装:
项目地址:
在file里选最新版本的目录,然后选择对应支持的python版本下载

默认安装,一路下一步(必须先装好对应python版本),装好后控面板出现"pywin32-xxx"


PYTHON脚本中import使用win32com模块与wmi模块示列:

  1. from win32com.client import GetObject
  2. import wmi

  3. wmi = GetObject('winmgmts:/<命名空间>')
  4. <instance> = wmi.ExecQuery('select * from <顶级类> ')    #此处用的WQL语句,类似SQL语句

  5. for item in <instance>:
  6.     <custom_variable> = item.<类属性>



附上监控脚本:




check_win_resource.py脚本中类及属性说明:
类:Win32_PerfFormattedData_Tcpip_NetworkInterface:网络及流量信息
属性:
Name:网卡名
BytesReceivedPersec:每秒接受字节数(*8/1024/1024=Bps)
BytesSentPersec:每秒发送字节数(*8/1024/1024=Bps)
BytesTotalPersec:每秒收发字节总数(*8/1024/1024=Bps)
CurrentBandwidth:带宽(/1000/1000=Mbps)
PacketsReceivedPersec:每秒接受包
PacketsSentPersec:每秒发送包
PacketsPersec:每秒收发包总数

类:Win32_PhysicalMemory:获取内存信息
属性:
Capacity:内存容量(单位Byte,/1024/1024  =MB)

类:Win32_PerfFormattedData_PerfOS_Memory:内存使用情况
属性:
AvailableMBytes :剩余内存(单位MB)

因此,内存使用情况=(Capacity/1024/1024) - AvailableMBytes

check_win_services.py脚本中类及属性说明:
类:Win32_PerfFormattedData_W3SVCW3WPCounterProvider_W3SVCW3WP:获取IIS站点的信息
属性:
Name:PID_站点名

类:Win32_PerfFormattedData_PerfProc_Process
属性:
IDProcess:站点pid
PercentProcessorTime:站点CPU使用率(%)
WorkingSetPrivate:站点内存使用(单位:byte,/1024/1024=MB)
CurrentConnections:站点连接数

类:Win32_PerfFormattedData_W3SVC_WebService:很多IIS请求相关信息(脚本中暂时没有用到)

类:Win32_Service:注册服务信息
属性:
Name:服务名
ProcessId:进程号

类:Win32_Process:获取进程信息
属性:
ProcessId:进程号
CommandLine:进程名(需进行字符串处理)

类:Win32_PerfFormattedData_PerfProc_Process:进程运行数据
属性:
IDProcess:进程号
PercentProcessorTime:进程cpu
WorkingSetPrivate:进程内存(单位byte,/1024/1024=MB)
阅读(11180) | 评论(0) | 转发(0) |
1

上一篇:linux用s3fs-fuse挂载AWS对象存储s3

下一篇:没有了

给主人留下些什么吧!~~