Windows performance counters
Публікується в рамках розгрібання чернеток. Тим хто не займається адмініструванням Windows буде зовсім не цікаво, проходьте далі…
Одного разу переді мною поставили задачу перевірити можливість отримання певних метрик загальною кількістю біля 200 штук для двох видів користувачів для трьох версій операційної системи. Я сміливо взявся за роботу, розваживши що якщо написати скрипт який в одному циклі проходиться по метриках, а в іншому – по хостах та користувачах, то це все можна зробити швидко. Але є одне але. 🙂 Точність оцінювання необхідного часу сильно падає якщо ти чогось не знаєш, і ще більше падає якщо ти не знаєш що ти чогось не знаєш.
Наприклад я довго не міг зрозуміти чому не працює:
PS C:\Users\Administrator\Documents> Get-Counter '\Disk Read Bytes/sec' Get-Counter : The specified counter path could not be interpreted. + CategoryInfo : InvalidResult: (:) [Get-Counter], Exception + FullyQualifiedErrorId : CounterApiError,Microsoft.PowerShell.Commands.GetCounterCommand
А виявилось що performance counter повинен мати формат:
[\\<ComputerName>]\<CounterSet>[(<Instance>)]\<CounterName>
, де необов’язковим є лише ComputerName
та іноді Instance
, і в мене воно просить уточнити якого диска читання я хочу отримати. Наприклад:
PS C:\Users\Administrator\Documents> Get-Counter '\LogicalDisk(*)\Disk Read Bytes/sec' Timestamp CounterSamples --------- -------------- 29.04.2014 20:01:15 \\win-dl46o26fd8h\logicaldisk(harddiskvolume1)\disk read bytes/sec : 0 \\win-dl46o26fd8h\logicaldisk(c:)\disk read bytes/sec : 8209,39607393418 \\win-dl46o26fd8h\logicaldisk(_total)\disk read bytes/sec : 8209,39607393418
І кількість таких проблем виправляється лише постійною освітою, тому нею й займемось.
Get-Counter
Основне варте уваги джерело інформації яке я зміг викопати – Microsoft Technet на жаль. Ну але там теж щось пишуть, хоча й занудно.
Виявляється, всі каунтери групуються в множини, і список цих множин можна отримати командою:
Get-Counter -ListSet * ` | Sort-Object CounterSetName | Format-Table CounterSetName, Description -wrap
Отримаємо табличку подібну до:
CounterSetName Description -------------- ----------- LogicalDisk The Logical Disk performance object consists of counters that monitor logi cal partitions of a hard or fixed disk drives. Performance Monitor identi fies logical disks by their a drive letter, such as C. ... PhysicalDisk The Physical Disk performance object consists of counters that monitor har d or fixed disk drive on a computer. Disks are used to store file, progra m, and paging data and are read to retrieve these items, and written to re cord changes to them. The values of physical disk counters are sums of th e values of the logical disks (or partitions) into which they are divided.
Альтернативно, можна запустити програму perfmon
, і подивитись множини каунтерів у діалозі їх додавання, як на фотографії:
Ну от і все.
Я користувався програмою perfmon коли намагався пофіксати меморі ліки в веб проекті… помагало відстежити використання ресурсів і не звільнення пам’яті після закриття вікна браузера чи вкладки
patlatus
22 Серпня, 2014 at 22:10