使用WMI或Perfmon进行监控(以.NET编程方式)

时间:2015-05-29 23:38:56

标签: .net wmi perfmon system.management

我需要开发一个代理Windows服务,它始终只监视当前安装的机器中的资源。受监视的资源可能是处理器运行状况,SNMP陷阱,SQL Server运行状况。

我已经发现这可以使用WMI或Perfmon在.NET中以编程方式实现。

我不确定使用哪一个。我正在寻找利弊,我们需要在哪种情况下选择每个选项。

1 个答案:

答案 0 :(得分:1)

一般情况下,如果在“执行I”中有一个计数器可用,那么您将至少使用“执行”和“WMI”。举个例子:

如果我想监控机器上使用的%总内存,我可以使用Perfmon计数器" Memory,Available Kbytes"。我还会使用WMI沿着以下几行获取机器上的总内存:

new ManagementObjectSearcher("root\\CIMV2", "select * from win32_computersystem")

然后将totalphysicalmemory属性存储到名为totalKBytes的变量中。

现在每当我想计算使用的%内存时,我都会进行计算:

(1.0f - (counter.NextValue() / totalKBytes)) * 100.0f

结论是不要陷入困境,试图在Perform或WMI之间做出决定。你至少需要它们。一旦你真正进入监控,你也可能会发现自己正在从注册表中读取,运行自定义脚本,阅读文件系统等。