Прошлый раз мы рассмотрели мониторинг в zabbix Linux IOPS при помощи iostat.
Сегодня мы попробуем сделать тоже самое, но уже в windows окружении.
Windows в фоновом режиме самостоятельно обсчитывает определенный набор метрик, делается это через «Perfomance Monitor» доступ к которому в zabbix реализуется через функцию «perf_counter».
На вход perf_counter получает «имя» счетчика, и это первый подводный камень.
В Интернете можно найти несколько вариантов обозначения одного и того же счетчика, например:
perf_counter[\PhysicalDisk(_Total)\Disk Reads/sec] perf_counter[\Физический диск(_Total)\Обращений чтения с диска/с] perf_counter[\234(_Total)\214] |
Несмотря на различия, это действительно один и тот же счетчик.
Первый два характерны для разных локаций windows и использовать их в мониторинге мы не будем, т.к. под русской windows не будут работать английские счетчики и наоборот.
Третий вариант стоит назвать универсальным, т.к. он работает везде, но «overhead» в интуитивной непонятности обозначений.
Несколько вариантов получить счетчики:
typeperf -qx lodctr /s:perfcount.txt |
В «lodctr» мы видим сопоставление цифр и названий счетчиков:
234 - PhysicalDisk 236 - LogicalDisk |

Или в виде удобной таблицы: Techwiki:Performance Counter Indexes
В качестве примера, я сделал шаблон для «Disk I/O Operations» и «File I/O Operations» диска «Total». Особенность шаблона, что он не требует никаких изменений конфигурации zabbix на клиентах.
https://github.com/spions/zabbix/tree/master/zabbix_Windows_IOPS
Disk I/O Operations

График показывает общее количество операций ввода\вывода, обработанных (завершенных) диском в течении 1 секунды (Input/Output Operations Per Second, IOPS). Этот счетчик позволяет примерно оценить, насколько нагрузка на диски близка к предельной.
File I/O Operations

Если нужна расшифровка по всем дискам, то уже потребуется изменение конфигурации zabbix, путем добавления нового UserParameter: объявляем переменную windowsdisk.discovery с запуском powershell скрипта:
UserParameter=windowsdisk.discovery, powershell -NoProfile -ExecutionPolicy Bypass -File c:\get_disks.ps1 |
get_disks.ps1:
https://github.com/spions/zabbix/blob/master/zabbix_Windows_IOPS/files/get_disks.ps1
$drives = Get-WmiObject win32_PerfFormattedData_PerfDisk_PhysicalDisk | ?{$_.name -ne "_Total"} | Select Name
$idx = 1
write-host "{"
write-host " `"data`":[`n"
foreach ($perfDrives in $drives)
{
if ($idx -lt $drives.Count)
{
$line= "{ `"{#DISKNUMLET}`" : `"" + $perfDrives.Name + "`" },"
write-host $line
}
elseif ($idx -ge $drives.Count)
{
$line= "{ `"{#DISKNUMLET}`" : `"" + $perfDrives.Name + "`" }"
write-host $line
}
$idx++;
}
write-host
write-host " ]"
write-host "}" |
Результатом будет json с количеством дисков:
{
"data":[
{ "{#DISKNUMLET}" : "0 C:" }
]
} |
На основе данного discovery можно снимать необходимое вам количество метрик и строить графики, но это тема для отдельного поста.
RSS
Твиттер
G+
Категория: 
