Я хочу контролировать свою IIS (ферму SharePoint) с помощью WMI. Я пытаюсь получить следующую информацию от системы:WMI - данные о производительности NonAnonymousUsersPerSec
- CurrentConnections
- NonAnonymousUsersPerSec
- AnonymousUsersPerSec
Моя проблема заключается в том, что я хочу, одни и те же данные, что и в «Монитор надежности и производительности «(perfmon), когда я добавляю к монитору \ Web Service (_Total) \ Anonymous User/ses и \ Web Service (_Total)/NonAnonymous Users/ses.
Этот монитор показывает мне почти 20 NonAnonymous пользователей в секунду и 0 Anonymous. Я думаю, что эти значения верны. Количество соединений одинаково, в перфоман-мониторе и в запросе WMI.
Но значение для CurrentUser полностью отличается от значения на мониторе.
Как получить эти данные с помощью запросов WMI?
Win32_PerfFormattedData_W3SVC_WebService class
SelectQuery queryCurrentUser = new SelectQuery("SELECT * FROM Win32_PerfFormattedData_W3SVC_WebService WHERE Name LIKE \"_Total\"");
- CurrentConnections: ~ 150
- NonAnonymousUsersPerSec: 0
- AnonymousUsersPerSec: 0
Win32_PerfRawData_W3SVC_WebService class
SelectQuery queryCurrentUser = new SelectQuery("SELECT * FROM Win32_PerfRawData_W3SVC_WebService WHERE Name LIKE \"_Total\"");
- CurrentConnections: ~ 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"]);
}