0

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

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

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

4

1 回答 1

1

一般来说,如果在 Perform 中有一个计数器可用,我会从那里开始,但您至少会同时使用 Perform 和 WMI。举个例子:

如果我想监控机器上使用的总内存百分比,我会使用 Perfmon 计数器“Memory,Available Kbytes”。我还将按照以下方式使用 WMI 获取机器上的总内存:

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

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

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

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

结论是不要陷入在执行或 WMI 之间做出决定的过程中。你至少需要他们两个。一旦你真正开始监控,你可能还会发现自己从注册表读取、运行自定义脚本、读取文件系统等。

于 2015-05-30T19:41:14.663 回答