0

我想用 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"]);
}
4

1 回答 1

0

我找到了解决办法!

Win32_PerfFormattedData_ASPNET_ASPNETApplications班级。

值在RequestsPerSecAnonymousRequestsPerSec

于 2012-03-30T11:18:54.927 回答