我想用 WMI 监控我的 IIS(SharePoint Farm)。我正在尝试从系统中获取以下信息:
- 当前连接
- NonAnonymousUsersPerSec
- AnonymousUsersPerSec
我的问题是,当我将 \Web Service(_Total)\Anonymous User/ses 和 \web Service(_Total)/NonAnonymous Users/ses 添加到监视器。
该监视器每秒向我显示近 20 个非匿名用户和 0 个匿名用户。我认为这些价值观是正确的。在 perfmon-monitor 和 WMI 查询中,连接数是相同的。
但是 CurrentUser 的值与监视器中的值完全不同。
如何使用 WMI 查询获取这些数据?
Win32_PerfFormattedData_W3SVC_WebService 类
SelectQuery queryCurrentUser = new SelectQuery("SELECT * FROM Win32_PerfFormattedData_W3SVC_WebService WHERE Name LIKE \"_Total\"");
- 当前连接数:~150
- NonAnonymousUsersPerSec : 0
- AnonymousUsersPerSec : 0
Win32_PerfRawData_W3SVC_WebService 类
SelectQuery queryCurrentUser = new SelectQuery("SELECT * FROM Win32_PerfRawData_W3SVC_WebService WHERE Name LIKE \"_Total\"");
- 当前连接数:~150
- NonAnonymousUsersPerSec : ~150000
- AnonymousUsersPerSec : ~2000000
代码:
ManagementScope scope = new ManagementScope("\\\\" + stringServer + "\\root\\CIMV2");
//PerfRawData query
SelectQuery queryCurrentUser = new SelectQuery("SELECT * FROM Win32_PerfRawData_W3SVC_WebService WHERE Name LIKE \"_Total\"");
//PerfFormattedData query
SelectQuery queryCurrentUser = new SelectQuery("SELECT * FROM Win32_PerfFormattedData_W3SVC_WebService WHERE Name LIKE \"_Total\"");
ManagementObjectSearcher currentUsers = new ManagementObjectSearcher(scope, queryCurrentUser);
ManagementObjectCollection currentUsersCollection = currentUsers.Get();
foreach (ManagementObject queryObj in currentUsersCollection)
{
Console.WriteLine("CurrentConnections {0}", queryObj["CurrentConnections"]);
Console.WriteLine("NonAnonymousUsersPerSec {0}", queryObj["NonAnonymousUsersPerSec"]);
Console.WriteLine("AnonymousUsersPerSec {0}", queryObj["AnonymousUsersPerSec"]);
}