Я хочу контролировать свой IIS (ферму SharePoint) с помощью WMI. Я пытаюсь получить следующую информацию из системы:
- CurrentConnections
- NonAnonymousUsersPerSec
- AnonymousUsersPerSec
Моя проблема в том, что мне нужны те же данные, что и в «Мониторе надежности и производительности» (perfmon), когда я добавляю \ Web-сервис (_Total) \ Анонимный пользователь / ses и \ веб-сервис (_Total) / Неанонимные пользователи / ses на монитор.
Этот монитор показывает мне почти 20 неанонимных пользователей в секунду и 0 анонимных.
Я думаю, что эти значения верны. Номер соединения одинаковый, в perfmon-monitor и 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"]);
}