Была задача сделать мониторинг Hyper-V на Server 2008, больше интересовало нагрузка жесткого проца памяти и сети.
В целом на самом сервере был заббикс агент и виртуалках так же были заббикс агенты т.е. в целом было видно состояние сервера снаружи и изнутри виртуалок.
Были загружены шаблоны с заббикс шары выполнен их импорт и далее их адаптация под сервер 2008.
Сразу скажу что на 2008 только начиналось внедрение Hyper-V и часть функций отсутствовала в сравнении с 2012.
На 2008 нет: репликаций и кластеров, так же отсутствует модуль в powershell Module-PSHyperv команда Get-VM
Так же в шаблонах не заработал ключ perf_counter на rus windows нужно было указать perf_counter_en так как название было en
Пример:
Логический диск\Среднее время чтения с диска
\Logical Disk(*)\Avg. Disk sec/Read
root\CIMV2 Win32_PerfFormattedData_PerfDisk_LogicalDisk
AvgDisksecPerRead Среднее время чтения с диска - это время в секундах, затрачиваемое в среднем на одну операцию чтения данных с диска.
Элемент заббикс
perf_counter_en[\Logical Disk(*)\Avg. Disk sec/Read]
perf_counter_en[\236(*)\208]
perf_counter[\Логический диск(*)\Среднее время чтения с диска (с)]
wmi.get[root\cimv2, select AvgDisksecPerRead FROM Win32_PerfFormattedData_PerfDisk_LogicalDisk WHERE Name='_Total']
Из всего шаблона в начале заработало минимум элементов данных ну и далее была переделка изменения чтоб хоть как то его заставить работать.
Вкратце кому лень читать ставим модуль Module-PSHyperv в PowerShell (версию рекомендуют не ниже 3.0) Пример установки Модуль PowerShell можно модуль не ставить просто не будет работать часть элементов
Далее скачиваем шаблон и скрипт (скрипт уже изменен под модуль 2008 сервера)
Для Windows Server 2008 R2
Установить Net Framework 2 , 4.2
Обновить агента обновления
Ставим обновление Win7AndW2K8R2-KB3191566-x64
Получаем полсе перезагрузки powershell версияю 5.1 (выполнить команду host для просмотра версии)
Import-Module HyperV http://pshyperv.codeplex.com/releases
Вариант импорта модуля %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -noexit -command import-module Hyperv
Проверка C:\Windows\System32\WindowsPowerShell\v1.0\Modules должен быть модуль Hyperv
Команды проверки
Показать
UserParameter=<ключ>,<команда>
UserParameter=ключ[*],команда $1
В элемент данных пишем
ключ[1переменная,2переменная,3переменная,и тд]
Что было для разных шаблонов и скриптов
UserParameter=replica.state,powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\Replica.ps1" $1
UserParameter=hyperv.host[*],powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\hyperv_host.ps1" -ActionType "$1" -Key "$2" -Value "$3"
UserParameter=hyperv_replica_discover,powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\hyperv_replica_discover.ps1"
UserParameter=hyperv_replica[*],powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\hyperv_replica.ps1" $1 $2
UserParameter=windowscsvfs.discovery[*],powershell -NoProfile -ExecutionPolicy Bypass -File C:\zabbix\Scripts\win_clustersv.ps1 $1
UserParameter=ms.hyperv[*],powershell -NoProfile -NoLogo -File "C:\Zabbix\Scripts\zbx-hyperv.ps1" $1
-NoProfile Не загружает профиль PowerShell
-NoLogo Скрывает баннер авторских прав при запуске программы
-ExecutionPolicy Задает политику выполнения по умолчанию для текущего сеанса и сохраняет ее в переменной среде
Bypass - разрешён запуск любых PS файлов (предупреждения не выводятся) используется для автоматического запуска PS скриптов
-File является путем к файлу, сценарий выполняется в локальной области ("с последовательной точкой"), чтобы функции и переменные, создаваемые сценарием, были доступны в текущем сеансе.
Введите путь к файлу сценария и любые параметры.
File должен быть последним параметром в команде.
Все значения, введенные после параметра File , обрабатываются как путь к файлу скрипта и параметры, передаваемые этому скрипту
Прием входных переменных
1. Самый простой встроенную переменную $args
$args[0] $args[1] и т.д. аргументы должны вводиться ровно в том порядке, в каком они указаны в сценарии
.\service.ps1 spooler SRV1
2. Более эффективным
Param (
[string]$service,
[string]$computer
)
Get-Service -ServiceName $service -ComputerName $computer
.\service.ps1 -Service spooler -Computer SRV1
.\service.ps1 -Serv spooler -Comp SRV1
Имена можно и совсем опустить, хотя это и не очень правильно, примет значения параметров в том порядке, в каком они указаны в команде
\service.ps1 spooler SRV1
3. Более сложный способ передачи параметров (обязательные, указывать для каждого позицию и многое другое)
как обязательные для заполнения (Mandatory=$true) и для каждого задана своя позиция (оба параметра обязательно должны быть указаны и должны идти строго в определенном порядке)
ограничение в 3 символа (ValidateLength(1,3):
Position – Позиция переменной при вызове функции;
Пример
CmdletBinding()]
Param (
[Parameter (Mandatory=$true)]
[string]$service,
[Parameter (Mandatory=$true)]
[ValidateLength(1,3)]
[string]$computer
)
Get-Service -ServiceName $service -ComputerName $computer
Команда пример
.\service.ps1 -Service spooler -Computer SRV1
Помощь help about_functions_advanced_parameters
обычный элемент replica.state
Запрос тест
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\1\Replica.ps1"
hyperv.host[*]
обычный элемент hyperv.host[get,host_stat,all]
Обнаружение
hyperv.host[discover,vsw]
hyperv.host[discover,vm]
hyperv.host[discover,va]
hyperv.host[discover,vm_na]
hyperv.host[discover,vm_sd]
Запрос тест
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\1\hyperv_host.ps1" -ActionType "get" -Key "host_stat" -Value "all"
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\1\hyperv_host.ps1" -ActionType "discover" -Key "vsw" -Value ""
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\1\hyperv_host.ps1" -ActionType "discover" -Key "vm" -Value ""
Обнаружение
hyperv_replica_discover
Запрос тест
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\1\hyperv_replica_discover.ps1"
Прототипы элементов
hyperv_replica[*]
Запрос тест
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\1\hyperv_replica.ps1" $1 $2
hyperv_replica[health,{#SRVNAME}]
hyperv_replica[lastsync,{#SRVNAME}]
windowscsvfs.discovery[*]
Обнаружение
windowscsvfs.discovery[name]
windowscsvfs.discovery[path]
Запрос тест
powershell -NoProfile -ExecutionPolicy Bypass -File C:\zabbix\Scripts\1\win_clustersv.ps1 name
powershell -NoProfile -ExecutionPolicy Bypass -File C:\zabbix\Scripts\1\win_clustersv.ps1 path
ms.hyperv[*]
1 обычный элемент ms.hyperv[full]
Обнаружение
ms.hyperv[lld]
Запрос тест
powershell -NoProfile -NoLogo -File "C:\Zabbix\Scripts\1\zbx-hyperv.ps1 lld
powershell -NoProfile -NoLogo -File "C:\Zabbix\Scripts\1\zbx-hyperv.ps1 full
Прототипы зависимые элементы данных
ms.hyperv.vm[{#VM.NAME},"CPUUsage"]
ms.hyperv.vm[{#VM.NAME},"IntSvcState"]
ms.hyperv.vm[{#VM.NAME},"IntSvcVer"]
ms.hyperv.vm[{#VM.NAME},"Memory"]
ms.hyperv.vm[{#VM.NAME},"NumaNodes"]
ms.hyperv.vm[{#VM.NAME},"NumaSockets"]
ms.hyperv.vm[{#VM.NAME},"ReplHealth"]
ms.hyperv.vm[{#VM.NAME},"ReplMode"]
ms.hyperv.vm[{#VM.NAME},"ReplState"]
ms.hyperv.vm[{#VM.NAME},"State"]
ms.hyperv.vm[{#VM.NAME},"Uptime"]
{#VM.NAME} - где имя виртуальной машины
Объединяем все в 1 скрипт
Делаем 1 скрипт HyperV.ps1
UserParameter=HyperV[*],powershell -NoProfile -NoLogo -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName "$1" -ActionType "$2" -Key "$3" -Value "$4"
$1 - входной это у нас будут блоки скриптов их имена replica ; hyperv.host ; hyperv_replica_discover ; hyperv_replica ; windowscsvfs ; ms.hyperv
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName "replica" (нет Get-VMReplication)
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "get" -Key "host_stat" -Value "all"
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "get" -Key "vm_stat" -Value "Имя виртуальной машины"
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vsw" -Value ""
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm" -Value ""
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "va" -Value ""
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm_na" -Value ""
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm_sd" -Value ""
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica_discover -ActionType "" -Key "" -Value "" (нет Get-VMReplication)
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica -ActionType "health" -Key "{#SRVNAME}" -Value "" (нет Get-VMReplication)
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica -ActionType "lastsync" -Key "{#SRVNAME}" -Value "" (нет Get-VMReplication)
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName windowscsvfs -ActionType "name" -Key "" -Value "" (нет win32_PerfFormattedData_CsvFsPerfProvider_ClusterCSVFileSystem)
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName windowscsvfs -ActionType "path" -Key "" -Value "" (нет Get-ClusterSharedVolume)
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName ms.hyperv -ActionType "full" -Key "" -Value ""
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName ms.hyperv -ActionType "lld" -Key "" -Value ""
UserParameter=ключ[*],команда $1
В элемент данных пишем
ключ[1переменная,2переменная,3переменная,и тд]
Что было для разных шаблонов и скриптов
UserParameter=replica.state,powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\Replica.ps1" $1
UserParameter=hyperv.host[*],powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\hyperv_host.ps1" -ActionType "$1" -Key "$2" -Value "$3"
UserParameter=hyperv_replica_discover,powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\hyperv_replica_discover.ps1"
UserParameter=hyperv_replica[*],powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\hyperv_replica.ps1" $1 $2
UserParameter=windowscsvfs.discovery[*],powershell -NoProfile -ExecutionPolicy Bypass -File C:\zabbix\Scripts\win_clustersv.ps1 $1
UserParameter=ms.hyperv[*],powershell -NoProfile -NoLogo -File "C:\Zabbix\Scripts\zbx-hyperv.ps1" $1
-NoProfile Не загружает профиль PowerShell
-NoLogo Скрывает баннер авторских прав при запуске программы
-ExecutionPolicy Задает политику выполнения по умолчанию для текущего сеанса и сохраняет ее в переменной среде
Bypass - разрешён запуск любых PS файлов (предупреждения не выводятся) используется для автоматического запуска PS скриптов
-File является путем к файлу, сценарий выполняется в локальной области ("с последовательной точкой"), чтобы функции и переменные, создаваемые сценарием, были доступны в текущем сеансе.
Введите путь к файлу сценария и любые параметры.
File должен быть последним параметром в команде.
Все значения, введенные после параметра File , обрабатываются как путь к файлу скрипта и параметры, передаваемые этому скрипту
Прием входных переменных
1. Самый простой встроенную переменную $args
$args[0] $args[1] и т.д. аргументы должны вводиться ровно в том порядке, в каком они указаны в сценарии
.\service.ps1 spooler SRV1
2. Более эффективным
Param (
[string]$service,
[string]$computer
)
Get-Service -ServiceName $service -ComputerName $computer
.\service.ps1 -Service spooler -Computer SRV1
.\service.ps1 -Serv spooler -Comp SRV1
Имена можно и совсем опустить, хотя это и не очень правильно, примет значения параметров в том порядке, в каком они указаны в команде
\service.ps1 spooler SRV1
3. Более сложный способ передачи параметров (обязательные, указывать для каждого позицию и многое другое)
как обязательные для заполнения (Mandatory=$true) и для каждого задана своя позиция (оба параметра обязательно должны быть указаны и должны идти строго в определенном порядке)
ограничение в 3 символа (ValidateLength(1,3):
Position – Позиция переменной при вызове функции;
Пример
CmdletBinding()]
Param (
[Parameter (Mandatory=$true)]
[string]$service,
[Parameter (Mandatory=$true)]
[ValidateLength(1,3)]
[string]$computer
)
Get-Service -ServiceName $service -ComputerName $computer
Команда пример
.\service.ps1 -Service spooler -Computer SRV1
Помощь help about_functions_advanced_parameters
обычный элемент replica.state
Запрос тест
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\1\Replica.ps1"
hyperv.host[*]
обычный элемент hyperv.host[get,host_stat,all]
Обнаружение
hyperv.host[discover,vsw]
hyperv.host[discover,vm]
hyperv.host[discover,va]
hyperv.host[discover,vm_na]
hyperv.host[discover,vm_sd]
Запрос тест
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\1\hyperv_host.ps1" -ActionType "get" -Key "host_stat" -Value "all"
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\1\hyperv_host.ps1" -ActionType "discover" -Key "vsw" -Value ""
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\1\hyperv_host.ps1" -ActionType "discover" -Key "vm" -Value ""
Обнаружение
hyperv_replica_discover
Запрос тест
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\1\hyperv_replica_discover.ps1"
Прототипы элементов
hyperv_replica[*]
Запрос тест
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\1\hyperv_replica.ps1" $1 $2
hyperv_replica[health,{#SRVNAME}]
hyperv_replica[lastsync,{#SRVNAME}]
windowscsvfs.discovery[*]
Обнаружение
windowscsvfs.discovery[name]
windowscsvfs.discovery[path]
Запрос тест
powershell -NoProfile -ExecutionPolicy Bypass -File C:\zabbix\Scripts\1\win_clustersv.ps1 name
powershell -NoProfile -ExecutionPolicy Bypass -File C:\zabbix\Scripts\1\win_clustersv.ps1 path
ms.hyperv[*]
1 обычный элемент ms.hyperv[full]
Обнаружение
ms.hyperv[lld]
Запрос тест
powershell -NoProfile -NoLogo -File "C:\Zabbix\Scripts\1\zbx-hyperv.ps1 lld
powershell -NoProfile -NoLogo -File "C:\Zabbix\Scripts\1\zbx-hyperv.ps1 full
Прототипы зависимые элементы данных
ms.hyperv.vm[{#VM.NAME},"CPUUsage"]
ms.hyperv.vm[{#VM.NAME},"IntSvcState"]
ms.hyperv.vm[{#VM.NAME},"IntSvcVer"]
ms.hyperv.vm[{#VM.NAME},"Memory"]
ms.hyperv.vm[{#VM.NAME},"NumaNodes"]
ms.hyperv.vm[{#VM.NAME},"NumaSockets"]
ms.hyperv.vm[{#VM.NAME},"ReplHealth"]
ms.hyperv.vm[{#VM.NAME},"ReplMode"]
ms.hyperv.vm[{#VM.NAME},"ReplState"]
ms.hyperv.vm[{#VM.NAME},"State"]
ms.hyperv.vm[{#VM.NAME},"Uptime"]
{#VM.NAME} - где имя виртуальной машины
Объединяем все в 1 скрипт
Делаем 1 скрипт HyperV.ps1
UserParameter=HyperV[*],powershell -NoProfile -NoLogo -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName "$1" -ActionType "$2" -Key "$3" -Value "$4"
$1 - входной это у нас будут блоки скриптов их имена replica ; hyperv.host ; hyperv_replica_discover ; hyperv_replica ; windowscsvfs ; ms.hyperv
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName "replica" (нет Get-VMReplication)
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "get" -Key "host_stat" -Value "all"
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "get" -Key "vm_stat" -Value "Имя виртуальной машины"
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vsw" -Value ""
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm" -Value ""
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "va" -Value ""
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm_na" -Value ""
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm_sd" -Value ""
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica_discover -ActionType "" -Key "" -Value "" (нет Get-VMReplication)
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica -ActionType "health" -Key "{#SRVNAME}" -Value "" (нет Get-VMReplication)
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica -ActionType "lastsync" -Key "{#SRVNAME}" -Value "" (нет Get-VMReplication)
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName windowscsvfs -ActionType "name" -Key "" -Value "" (нет win32_PerfFormattedData_CsvFsPerfProvider_ClusterCSVFileSystem)
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName windowscsvfs -ActionType "path" -Key "" -Value "" (нет Get-ClusterSharedVolume)
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName ms.hyperv -ActionType "full" -Key "" -Value ""
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName ms.hyperv -ActionType "lld" -Key "" -Value ""
wmic.exe и perf_counter
Показать
Счетчики производительности Windows используя ключ perf_counter[].
Для того чтобы найти цифровые эквиваленты, выполните regedit, а затем найдите HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009
Напримере https://www.vmgu.ru/articles/microsoft- ... thout-scom
Performance Monitor (Системный монитор) команда запуска perfmon но нас интересуют больше запросы через wmi для zabbix
Процессор
Диск
Память
Сеть
Процессор
Для cmd Запрос всей таблицы
wmic.exe /NAMESPACE:\\root\CIMV2 PATH Win32_PerfFormattedData_HvStats_HyperVHypervisorLogicalProcessor
посмотреть суммарную нагрузку на физический процессор которую создают все виртуальные машины и сам гипервизор
Логический процессор низкоуровневой оболочки Hyper-V \ % общего времени работы
\Hyper-V Hypervisor Logical Processor(_Total)\% Total Run Time
root\CIMV2 SELECT * FROM Win32_PerfFormattedData_HvStats_HyperVHypervisorLogicalProcessor WHERE PercentTotalRunTime = 1",,48)
Элементы заббикс
perf_counter_en[\Hyper-V Hypervisor Logical Processor(_Total)\% Total Run Time]
wmi.get[root\cimv2, select PercentTotalRunTime FROM Win32_PerfFormattedData_HvStats_HyperVHypervisorLogicalProcessor WHERE Name='_Total']
определить, процессор какой именно виртуальной машины создает наибольшую нагрузку
Виртуальный процессор низкоуровневой оболочки Hyper-V \ % общего времени работы
\Hyper-V Hypervisor Virtual Processor\% Total Run Time
root\CIMV2 SELECT * FROM Win32_PerfFormattedData_HvStats_HyperVHypervisorVirtualProcessor WHERE PercentTotalRunTime=1",,48)
Элемент заббикс
perf_counter_en[\Hyper-V Hypervisor Virtual Processor(_Total)\% Total Run Time]
wmi.get[root\cimv2, select PercentTotalRunTime FROM Win32_PerfFormattedData_HvStats_HyperVHypervisorVirtualProcessor WHERE Name='_Total']
Диск
Для cmd Запрос всей таблицы
wmic.exe /NAMESPACE:\\root\CIMV2 PATH Win32_PerfFormattedData_PerfDisk_LogicalDisk
Время затраченное системой (гипервизором в целом и виртуальными машинами) на чтение/запись информации с жесткого диска
Значение данных не должно превышать 25мс, иначе будут наблюдаться проблемы с производительностью которые нужно решать
Логический диск\Среднее время чтения с диска
\Logical Disk(*)\Avg. Disk sec/Read
root\CIMV2 Win32_PerfFormattedData_PerfDisk_LogicalDisk
AvgDisksecPerRead Среднее время чтения с диска - это время в секундах, затрачиваемое в среднем на одну операцию чтения данных с диска.
Элемент заббикс
perf_counter_en[\Logical Disk(*)\Avg. Disk sec/Read]
perf_counter_en[\236(*)\208]
perf_counter[\Логический диск(*)\Среднее время чтения с диска (с)]
wmi.get[root\cimv2, select AvgDisksecPerRead FROM Win32_PerfFormattedData_PerfDisk_LogicalDisk WHERE Name='_Total']
Логический диск\Среднее время записи на диск (с)
\Logical Disk(*)\Avg. Disk sec/Write
root\CIMV2 Win32_PerfFormattedData_PerfDisk_LogicalDisk
AvgDisksecPerWrite Среднее время записи на диск - это время в секундах, затрачиваемое в среднем на одну операцию записи данных на диск.
Элемент заббикс
perf_counter_en[\LogicalDisk(*)\Avg. Disk sec/Write]
perf_counter_en[\236(*)\210]
perf_counter[\Логический диск(*)\Среднее время записи на диск (с)]
wmi.get[root\cimv2, select AvgDisksecPerWrite FROM Win32_PerfFormattedData_PerfDisk_LogicalDisk WHERE Name='_Total']
AvgDisksecPerTransfer Среднее время обращения к диску - это время в секундах, затрачиваемое в среднем на один обмен данными с диском.
AvgDiskBytesPerRead Средний размер одного чтения с диска (байт) - это среднее количество байт данных, полученных с диска при выполнении операций чтения.
AvgDiskBytesPerTransfer Средний размер одного обмена с диском (байт) - это среднее количество байт данных, переданных при выполнении операций чтения или записи.
AvgDiskBytesPerWrite Средний размер одной записи на диск (байт) - это среднее количество байт данных, переданных на диск при выполнении операций записи.
AvgDiskQueueLength Средняя длина очереди диска - это среднее общее количество запросов на чтение и на запись, которые были поставлены в очередь для соответствующего диска в течение интервала измерения.
AvgDiskReadQueueLength Средняя длина очереди записи на диск - это среднее количество запросов на запись, которые были поставлены в очередь для соответствующего диска в течение интервала измерения.
AvgDiskWriteQueueLength Средняя длина очереди чтения диска - это среднее количество запросов на чтение, которые были поставлены в очередь для соответствующего диска в течение интервала измерения
Caption Название
CurrentDiskQueueLength Текущая длина очереди диска - это количество невыполненных запросов к диску во время сбора сведений о загруженности. Сюда включаются запросы, обслуживаемые
во время проведения замера. Этот показатель представляет собой конкретное текущее значение, и не является средним значением по некоторому интервалу времени.
Многошпиндельные дисковые устройства могут обрабатывать одновременно несколько запросов, остальные имеющиеся запросы будут ожидать обслуживания.
Этот счетчик может отражать постоянные изменения длины очереди, показывая то большую, то малую ее длину, но если имеется перегрузка дискового устройства,
то вероятно, что значение этого счетчика будет большим постоянно. Время задержки обработки запросов пропорционально длине этой очереди минус количество
шпинделей дисковых устройств. Для хорошей производительности системы среднее значение этого счетчика не должно превышать двух.
Description Описание
DiskBytesPersec Скорость обмена с диском (байт/с) - это скорость, с которой происходит обмен данными с этим диском при выполнении операций чтения или записи.
DiskReadBytesPersec Скорость чтения с диска (байт/с) - это скорость, с которой происходит передача данных с этого диска при выполнении операций чтения.
DiskReadBytesPersec Среднее время чтения с диска (с) - это время в секундах, затрачиваемое в среднем на одну операцию чтения данных с диска
DiskReadsPersec
DiskTransfersPersec Среднее время обращения к диску(с) - это время в секундах, затрачиваемое в среднем на один обмен данными с диском.
DiskWritesPersec Среднее время записи на диск (с) - это время в секундах, затрачиваемое в среднем на одну операцию записи данных на диск.
DiskWriteBytesPersec Скорость записи на диск (байт/с) - это скорость, с которой происходит передача данных на этот диск при выполнении операций записи.
FreeMegabytes Свободно мегабайт - показывает объем незанятого пространства на диске в мегабайтах. Один мегабайт равен 1048576 байтам.
Frequency_Object Периодичность(частота) объекта
Frequency_PerfTime Время увеличения частоты
Frequency_Sys100NS
Name Имя
PercentDiskReadTime % активности диска при чтении - Процент активности диска при чтении - это процент времени, затраченного выбранным дисковым устройством на обработку запросов на чтение данных.
PercentDiskTime % активности диска - Процент активности диска - это процент времени, затраченного выбранным дисковым устройством на обработку запросов на чтение и запись данных.
PercentDiskWriteTime % активности диска при записи - Процент активность диска при записи - это процент времени, затраченного выбранным дисковым устройством на обработку запросов на запись данных.
PercentFreeSpace % свободного места - Процент свободного места - это доля свободного места, имеющегося на логическом диске, по отношению к общему объему выбранного логического диска.
PercentIdleTime Процент времени бездействия - Процент времени бездействия говорит о том, какую часть времени интервала измерения диск бездействовал.
SplitIOPerSec Ращеплений ввода-вывода сек - Счетчик расщеплений ввода-вывода/сек - сообщает о частоте, с которой операции ввода-вывода диска оказываются расщепленными на несколько операций ввода-вывода. Расщепление операций ввода-вывода может происходить либо из-за того, что запрошен слишком большой блок данных, который не может быть передан за одну операцию, либо из-за фрагментации диска.
Timestamp_Object
Timestamp_PerfTime
Timestamp_Sys100NS
Обращений записи на диск/сек - это частота выполнения операций записи на этот диск.
Обращений к диску/сек - это частота выполнения операций чтения и записи на этот диск.
Обращений чтения с диска/сек - это частота выполнения операций чтения с этого диска.
Средний размер одного обмена с диском (байт) - это среднее количество байт данных, переданных при выполнении операций чтения или записи.
Средний размер одного чтения с диска (байт) - это среднее количество байт данных, полученных с диска при выполнении операций чтения.
Средний размер одной записи на диск (байт) - это среднее количество байт данных, переданных на диск при выполнении операций записи.
Память
Для того что бы посмотреть количество страниц памяти записанных/считанных с жесткого диска, для хост и гостевых систем
Если значение больше 500, значит либо недостаточно физической памяти, либо используется «битая» планка памяти
Память\Обмен страниц/с
\Memory\Pages/sec
root\CIMV2 Win32_PerfFormattedData_PerfOS_Memory PagesPersec
Элемент заббикс
perf_counter_en[\Memory\Pages/sec]
perf_counter_en[\4\40]
perf_counter[\Память\Обмен страниц/с]
wmi.get[root\cimv2, select PagesPersec FROM Win32_PerfFormattedData_PerfOS_Memory]
Если же вы используете Dynamic Memory, то вам необходимо пользоваться:
15754 Hyper-V Dynamic Memory Balancer Балансировщик динамической памяти Hyper-V
и
15770 Hyper-V Dynamic Memory VM Виртуальная машина с динамической памятью Hyper-V
root\CIMV2 Win32_PerfRawData_BalancerStats_HyperVDynamicMemoryBalancer
root\CIMV2 Win32_PerfRawData_BalancerStats_HyperVDynamicMemoryVM
Элемент заббикс
wmi.get[root\cimv2, select AvailableMemory FROM Win32_PerfFormattedData_BalancerStats_HyperVDynamicMemoryBalancer]
wmi.get[root\cimv2, select .GuestVisiblePhysicalMemory FROM Win32_PerfFormattedData_BalancerStats_HyperVDynamicMemoryVM WHERE Name='Имя ВМ']
\Memory\Pages/sec Кол-во страниц памяти записанных/считанных с жесткого диска, для хост и гостевых систем
Если значение больше 500, значит либо недостаточно физической памяти, либо используется «битая» планка памяти
Это прерывание возникает, когда искомая страница памяти оказывается выгруженной на диск в данный момент. Однако в этот счетчик попадают и рабочие ситуации, связанные с кэшем и отображенными в память (memory-mapped) файлами. Поэтому по нему нельзя однозначно судить о недостатке памяти.
Совместно рассматривать стоит Memory\Pages Input/sec и \Memory\Page Reads/sec
1. \Memory\Pages/sec
2. \Memory\Page Reads/sec - дополнение к 1 (кол-во чтение с диска страниц секунду, при подкачке)
3. \Memory\Pages Input/sec - 2 и 3 расматриваем совместно (кол-во страниц чтения, прочитанных с диска)
4. \Memory\Cache Faults (учитывает промахи подсистемы кэшировани)
5. \Memory\Transition Faults/sec (скорость, с которой обрабатываются так называемые soft faults — ошибки страниц, без обращения к диску, равно кол-ву таких страниц)
6. \Memory\Available MBytes (кол-во доступной процессам Оперативной (физической памяти), ориентировочно должно быть выше 5 000 КВ)
1, 2, 3 - постоянно находятся на высоком уровне, а 4 - а Низком (ОС активно работает с файлом подкачки, это говорит о недостатке памяти)
4 - Высок ( активная работа с большими файлами, это не должно длиться долго)
6. Уменьшение значений свободной Оперативной памяти, сопровождаемое ростом \Memory\Pages/sec и \Memory\Page Reads/sec, может свидетельствовать о недостатке памяти (Постоянное и равномерное уменьшение счетчика указывает на утечку памяти в одном из приложений)
LogicalDisk\Avg. Disk Queue Length , PhysicalDisk\Avg. Disk Queue Length - следят за количеством запросов, стоящих в очереди к диску.
Считается, что если очередь к диску длительное время включает более двух запросов, это может быть индикатором проблемы.
1400 Avg. Disk Queue Length Средняя длина очереди диска
{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Pages/sec].min(5)}>1500 or
{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Pages/sec].min(3m)}>{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Cache Faults/sec].min(3m)} and
{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Page Reads/sec].min(3)}>{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Cache Faults/sec].min(3m)} and
{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Pages Input/sec].min(3)}>{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Cache Faults/sec].min(3m)} and
{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Cache Faults/sec].min(5m)}<190 or
{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Cache Faults/sec].min(10m)}>1000
+Сеть
root\CIMV2 Win32_PerfFormattedData_Tcpip_NetworkInterface
root\CIMV2 Win32_PerfRawData_Tcpip_NetworkInterface
Для определения числа потоков ждущих сетевого адаптера
Показания всегда должно быть 0, если же оно равно 1 или 2, значит сеть – узкое место в вашей системе.
\Сетевой интерфейс\Длина очереди вывода
\Network Interface(*)\Output Queue Length
\510(*)\544
OutputQueueLength
Пример Ключа заббикс
perf_counter_en[\Network Interface(*)\Output Queue Length]
wmi.get[root\cimv2,"select OutputQueueLength from Win32_PerfFormattedData_Tcpip_NetworkInterface where Name='Intel[R] I350 Gigabit Network Connection'"]
wmi.get[root\cimv2,"select OutputQueueLength from Win32_PerfFormattedData_Tcpip_NetworkInterface where Name='Intel[R] I350 Gigabit Network Connection _2'"]
Общая нагрузка в Байт/сек для интерфейса
\Сетевой интерфейс\Всего байт/с
\Network Interface(*)\Bytes Total/sec
\510(*)\388
BytesTotalPersec
Пример ключа заббикс
perf_counter_en[\Network Interface(*)\Bytes Total/sec]
wmi.get[root\cimv2,"select BytesTotalPersec from Win32_PerfFormattedData_Tcpip_NetworkInterface where Name='Intel[R] I350 Gigabit Network Connection'"]
wmi.get[root\cimv2,"select BytesTotalPersec from Win32_PerfFormattedData_Tcpip_NetworkInterface where Name='Intel[R] I350 Gigabit Network Connection _2'"]
Для того что бы определить какой именно виртуальный сетевой адаптер (какой именно виртуально машины) создает нагрузку
\Виртуальный сетевой адаптер Hyper-V\Байт/сек
\Hyper-V Virtual Network Adapter(*)\Bytes/sec (для каждой виртуальной машины)
\15704(*)\15708
root\CIMV2 Win32_PerfFormattedData_NvspNicStats_HyperVVirtualNetworkAdapter
root\CIMV2 Win32_PerfRawData_NvspNicStats_HyperVVirtualNetworkAdapter
значение берем из BytesPersec ,а имя смотрим в Name
Пример Элемент заббикс
wmi.get[root\cimv2,select BytesSentPersec from Win32_PerfFormattedData_NvspNicStats_HyperVVirtualNetworkAdapter where Name='PowerDNS_Сетевой адаптер_7b7d1101-ba12-48c8-b1e6-b1286d1843b1--68c7afc6-e184-48c4-a053-c0b0d86ff51a']
Для cmd Запрос всей таблицы
wmic.exe /NAMESPACE:\\root\CIMV2 PATH Win32_PerfRawData_NvspNicStats_HyperVVirtualNetworkAdapter
Еще некоторые пути
root\CIMV2 Win32_PerfFormattedData_EthernetPerfProvider_HyperVLegacyNetworkAdapter
+ root\CIMV2 Win32_PerfFormattedData_BalancerStats_HyperVDynamicMemoryBalancer
root\CIMV2 Win32_PerfFormattedData_GmoPerfProvider_HyperVVMSaveSnapshotandRestore
+ root\CIMV2 Win32_PerfFormattedData_HvStats_HyperVHypervisor
+ root\CIMV2 Win32_PerfFormattedData_HvStats_HyperVHypervisorLogicalProcessor
+ root\CIMV2 Win32_PerfFormattedData_HvStats_HyperVHypervisorPartition
root\CIMV2 Win32_PerfFormattedData_HvStats_HyperVHypervisorRootPartition
+ root\CIMV2 Win32_PerfFormattedData_HvStats_HyperVHypervisorRootVirtualProcessor
+ root\CIMV2 Win32_PerfFormattedData_HvStats_HyperVHypervisorVirtualProcessor
root\CIMV2 Win32_PerfFormattedData_IdePerfProvider_HyperVVirtualIDEController
root\CIMV2 Win32_PerfFormattedData_NvspNicStats_HyperVVirtualNetworkAdapter
root\CIMV2 Win32_PerfFormattedData_NvspPortStats_HyperVVirtualSwitchPort
+- root\CIMV2 Win32_PerfFormattedData_NvspSwitchStats_HyperVVirtualSwitch
root\CIMV2 Win32_PerfFormattedData_RemotePerfProvider_HyperVVMRemoting
root\CIMV2 Win32_PerfFormattedData_StorageStats_HyperVVirtualStorageDevice
root\CIMV2 Win32_PerfFormattedData_VidPerfProvider_HyperVVMVidNumaNode
+ root\CIMV2 Win32_PerfFormattedData_VidPerfProvider_HyperVVMVidPartition
root\CIMV2 Win32_PerfFormattedData_VmbusStats_HyperVVirtualMachineBus
+ root\CIMV2 Win32_PerfFormattedData_VmmsVirtualMachineStats_HyperVVirtualMachineHealthSummary
root\CIMV2 Win32_PerfFormattedData_VmmsVirtualMachineStats_HyperVVirtualMachineSummary
root\CIMV2 Win32_PerfFormattedData_VmTaskManagerStats_HyperVTaskManagerDetail
root\CIMV2 Win32_PerfRawData_BalancerStats_HyperVDynamicMemoryBalancer
root\CIMV2 Win32_PerfRawData_BalancerStats_HyperVDynamicMemoryVM
root\CIMV2 Win32_PerfRawData_EthernetPerfProvider_HyperVLegacyNetworkAdapter
root\CIMV2 Win32_PerfRawData_GmoPerfProvider_HyperVVMSaveSnapshotandRestore
root\CIMV2 Win32_PerfRawData_StorageStats_HyperVVirtualStorageDevice
root\CIMV2 Win32_PerfRawData_HvStats_HyperVHypervisor
root\CIMV2 Win32_PerfRawData_HvStats_HyperVHypervisorLogicalProcessor
root\CIMV2 Win32_PerfRawData_HvStats_HyperVHypervisorPartition
root\CIMV2 Win32_PerfRawData_HvStats_HyperVHypervisorRootPartition
root\CIMV2 Win32_PerfRawData_HvStats_HyperVHypervisorRootVirtualProcessor
root\CIMV2 Win32_PerfRawData_HvStats_HyperVHypervisorVirtualProcessor
root\CIMV2 Win32_PerfRawData_IdePerfProvider_HyperVVirtualIDEController
root\CIMV2 Win32_PerfRawData_VidPerfProvider_HyperVVMVidNumaNode
root\CIMV2 Win32_PerfRawData_VidPerfProvider_HyperVVMVidPartition
root\CIMV2 Win32_PerfRawData_VmbusStats_HyperVVirtualMachineBus
root\CIMV2 Win32_PerfRawData_VmmsVirtualMachineStats_HyperVVirtualMachineHealthSummary
root\CIMV2 Win32_PerfRawData_VmmsVirtualMachineStats_HyperVVirtualMachineSummary
root\CIMV2 Win32_PerfRawData_VmTaskManagerStats_HyperVTaskManagerDetail
\root\virtualization
Обнаружение сетевого адаптера Hyper-V
-нету Win32_PerfFormattedData_Tcpip_NetworkAdapter
есть Win32_PerfFormattedData_Tcpip_NetworkInterface
Обнаружение виртуальной машины Hyper-V
+ Win32_PerfFormattedData_BalancerStats_HyperVDynamicMemoryVM
есть Win32_PerfFormattedData_BalancerStats_HyperVDynamicMemoryBalancer instance
Обнаружение сетевого адаптера виртуальной машины Hyper-V
+ Win32_PerfFormattedData_NvspNicStats_HyperVVirtualNetworkAdapter
Обнаружение устройства хранения виртуальной машины Hyper-V
-нету Win32_PerfFormattedData_Counters_HyperVVirtualStorageDevice
есть Win32_PerfFormattedData_StorageStats_HyperVVirtualStorageDevice
есть Win32_PerfRawData_StorageStats_HyperVVirtualStorageDevice
Обнаружение виртуального коммутатора Hyper-V
+ Win32_PerfFormattedData_NvspSwitchStats_HyperVVirtualSwitch
+Win32_PerfRawData_NvspSwitchStats_HyperVVirtualSwitch
- win32_networkadapter
+Win32_NetworkAdapter
+Win32_PnPEntity
+Win32_PerfRawData_NvspNicStats_HyperVVirtualNetworkAdapter
-нету win32_PerfFormattedData_CsvFsPerfProvider_ClusterCSVFileSystem
Выгрузка списком
Get-WmiObject -Namespace root\CIMV2 -List >> spisok.log
Начиная с Windows Server 2008 и вплоть до Windows Server 2008 R2 пространство имен, используемое для управления гипервизором, называлось "root\virtualization" (он же V1)
Windows Server 2012 представила рефакторизованное пространство имен "root\virtualization\v2" (добавить классы utils), предлагая также версию V1 для обратной совместимости с существующими инструментами
2012 R2 кращает поддержку пространства имен V1
Get-VM команда выполняется через модуль повершела в модуле површела запрос идет
Get-WmiObject -computername $Server -NameSpace $HyperVNamespace -Query $WQL | Add-Member -MemberType ALIASPROPERTY -Name "VMElementName" -Value "ElementName" -PassThru
Запрос в WMI идет в \root\virtualization класс Msvm_ComputerSystem например имена виртуалок ElementName
get-vm
Host VMElementName State Up-Time (mS) Owner
Новый вид
Name State CPUUsage(%) MemoryAsigned(M) Uptime Status Version
Счетчики производительности Windows
perf_counter
perf_counter[счетчик,<период>]
perf_counter_en[счетчик,<период>]
perf_instance.discovery[объект]
perf_instance_en.discovery[объект]
regedit, а затем найдите HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009 Counter EN - язык
regedit, а затем найдите HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\019 Counter RU - язык
Путь на конкретные службы HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\%servicename%\Performance
Чтобы получить полный список счетчиков производительности для мониторинга, вы можете выполнить: typeperf -qx
Пример
RU
2 Система
18 Байт записи файлов/с
EN
2 System
18 File Write Bytes/sec
Запрос
zabbix_get -s 192.168.xxx.xxx -k 'perf_counter[\2\18]' ответ45770939.055905
zabbix_get -s 192.168.xxx.xxx -k 'perf_counter_en[\2\18]' ответ 41674909.435581
zabbix_get -s 192.168.xxx.xxx -k 'perf_counter[\Система\Байт записи файлов/с]' ответ 74881757.832684
zabbix_get -s 192.168.xxx.xxx -k 'perf_counter_en[\System\File Write Bytes/sec]' ответ 40644644.840874
zabbix_get -s 192.168.xxx.xxx -k 'perf_counter_en[\Hyper-V Hypervisor Logical Processor(Hv LP 0)\% Total Run Time]'
ответ 29.749775
16012 Раздел низкоуровневой оболочки Hyper-V
16012 Hyper-V Hypervisor Partition
Запрос элемента
perf_counter[\Раздел низкоуровневой оболочки Hyper-V]
perf_counter_en[\Hyper-V Hypervisor Partition]
perf_counter[\16012]
или
15306 Hyper-V Hypervisor
15310 Partitions
perf_counter_en[\Hyper-V Hypervisor\Partitions]
perf_counter_en[\15306\15310]
Выборка чисто по слову Hyper без подразделов
RU
15654 Порт виртуального коммутатора Hyper-V
15318 Логический процессор низкоуровневой оболочки Hyper-V
15306 Низкоуровневая оболочка Hyper-V
15370 Корневой раздел низкоуровневой оболочки Hyper-V
15396 Корневой виртуальный процессор низкоуровневой оболочки Hyper-V
16012 Раздел низкоуровневой оболочки Hyper-V
16038 Виртуальный процессор низкоуровневой оболочки Hyper-V
16382 Удаленное взаимодействие Hyper-V VM
16402 Диспетчер памяти рабочего процесса виртуальной машины Hyper-V
15704 Виртуальный сетевой адаптер Hyper-V
16366 Виртуальный IDE-контроллер Hyper-V
16352 Устаревший сетевой адаптер Hyper-V
15792 Шина VMBus Hyper-V
15770 Виртуальная машина с динамической памятью Hyper-V
15754 Балансировщик динамической памяти Hyper-V
16388 Восстановление, снимок и сохранение виртуальной машины Hyper-V
15852 Сведения о диспетчере задач Hyper-V
15998 Виртуальное запоминающее устройство Hyper-V
15592 Виртуальный коммутатор Hyper-V
15584 Узел NUMA VID виртуальной машины Hyper-V
15574 Драйвер Hyper-V VM Vid
16216 Раздел Hyper-V VM Vid
16338 Очередь сообщений VID виртуальной машины Hyper-V
16376 Hyper-V VM IO APIC
15846 Сводные данные о работоспособности виртуальных машинах Hyper-V
15800 Сводные данные о виртуальных машинах Hyper-V
EN
15654 Hyper-V Virtual Switch Port
15318 Hyper-V Hypervisor Logical Processor
15324 Hypervisor Run Time
15362 % Hypervisor Run Time
15306 Hyper-V Hypervisor
15370 Hyper-V Hypervisor Root Partition
15396 Hyper-V Hypervisor Root Virtual Processor
15400 Hypervisor Run Time
15402 Hypercalls/sec
15404 Hypercalls Cost
15512 GPA Space Hypercalls/sec
15514 Logical Processor Hypercalls/sec
15516 Long Spin Wait Hypercalls/sec
15518 Other Hypercalls/sec
15520 Synthetic Interrupt Hypercalls/sec
15522 Virtual Interrupt Hypercalls/sec
15524 Virtual MMU Hypercalls/sec
15526 Virtual Processor Hypercalls/sec
15532 % Hypervisor Run Time
15546 Hypercalls Base
16012 Hyper-V Hypervisor Partition
16038 Hyper-V Hypervisor Virtual Processor
16042 Hypervisor Run Time
16044 Hypercalls/sec
16046 Hypercalls Cost
16154 GPA Space Hypercalls/sec
16156 Logical Processor Hypercalls/sec
16158 Long Spin Wait Hypercalls/sec
16160 Other Hypercalls/sec
16162 Synthetic Interrupt Hypercalls/sec
16164 Virtual Interrupt Hypercalls/sec
16166 Virtual MMU Hypercalls/sec
16168 Virtual Processor Hypercalls/sec
16174 % Hypervisor Run Time
16188 Hypercalls Base
16382 Hyper-V VM Remoting
16402 Hyper-V VM worker Process Memory Manager
15704 Hyper-V Virtual Network Adapter
16366 Hyper-V Virtual IDE Controller
16352 Hyper-V Legacy Network Adapter
15792 Hyper-V Virtual Machine Bus
15770 Hyper-V Dynamic Memory VM
15754 Hyper-V Dynamic Memory Balancer
16388 Hyper-V VM Save, Snapshot, and Restore
15852 Hyper-V Task Manager Detail
15998 Hyper-V Virtual Storage Device
15592 Hyper-V Virtual Switch
15584 Hyper-V VM Vid Numa Node
15574 Hyper-V VM Vid Driver
16216 Hyper-V VM Vid Partition
16338 Hyper-V VM Vid Message Queue
16376 Hyper-V VM IO APIC
15846 Hyper-V Virtual Machine Health Summary
15800 Hyper-V Virtual Machine Summary
Для того чтобы найти цифровые эквиваленты, выполните regedit, а затем найдите HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009
Напримере https://www.vmgu.ru/articles/microsoft- ... thout-scom
Performance Monitor (Системный монитор) команда запуска perfmon но нас интересуют больше запросы через wmi для zabbix
Процессор
Диск
Память
Сеть
Процессор
Для cmd Запрос всей таблицы
wmic.exe /NAMESPACE:\\root\CIMV2 PATH Win32_PerfFormattedData_HvStats_HyperVHypervisorLogicalProcessor
посмотреть суммарную нагрузку на физический процессор которую создают все виртуальные машины и сам гипервизор
Логический процессор низкоуровневой оболочки Hyper-V \ % общего времени работы
\Hyper-V Hypervisor Logical Processor(_Total)\% Total Run Time
root\CIMV2 SELECT * FROM Win32_PerfFormattedData_HvStats_HyperVHypervisorLogicalProcessor WHERE PercentTotalRunTime = 1",,48)
Элементы заббикс
perf_counter_en[\Hyper-V Hypervisor Logical Processor(_Total)\% Total Run Time]
wmi.get[root\cimv2, select PercentTotalRunTime FROM Win32_PerfFormattedData_HvStats_HyperVHypervisorLogicalProcessor WHERE Name='_Total']
определить, процессор какой именно виртуальной машины создает наибольшую нагрузку
Виртуальный процессор низкоуровневой оболочки Hyper-V \ % общего времени работы
\Hyper-V Hypervisor Virtual Processor\% Total Run Time
root\CIMV2 SELECT * FROM Win32_PerfFormattedData_HvStats_HyperVHypervisorVirtualProcessor WHERE PercentTotalRunTime=1",,48)
Элемент заббикс
perf_counter_en[\Hyper-V Hypervisor Virtual Processor(_Total)\% Total Run Time]
wmi.get[root\cimv2, select PercentTotalRunTime FROM Win32_PerfFormattedData_HvStats_HyperVHypervisorVirtualProcessor WHERE Name='_Total']
Диск
Для cmd Запрос всей таблицы
wmic.exe /NAMESPACE:\\root\CIMV2 PATH Win32_PerfFormattedData_PerfDisk_LogicalDisk
Время затраченное системой (гипервизором в целом и виртуальными машинами) на чтение/запись информации с жесткого диска
Значение данных не должно превышать 25мс, иначе будут наблюдаться проблемы с производительностью которые нужно решать
Логический диск\Среднее время чтения с диска
\Logical Disk(*)\Avg. Disk sec/Read
root\CIMV2 Win32_PerfFormattedData_PerfDisk_LogicalDisk
AvgDisksecPerRead Среднее время чтения с диска - это время в секундах, затрачиваемое в среднем на одну операцию чтения данных с диска.
Элемент заббикс
perf_counter_en[\Logical Disk(*)\Avg. Disk sec/Read]
perf_counter_en[\236(*)\208]
perf_counter[\Логический диск(*)\Среднее время чтения с диска (с)]
wmi.get[root\cimv2, select AvgDisksecPerRead FROM Win32_PerfFormattedData_PerfDisk_LogicalDisk WHERE Name='_Total']
Логический диск\Среднее время записи на диск (с)
\Logical Disk(*)\Avg. Disk sec/Write
root\CIMV2 Win32_PerfFormattedData_PerfDisk_LogicalDisk
AvgDisksecPerWrite Среднее время записи на диск - это время в секундах, затрачиваемое в среднем на одну операцию записи данных на диск.
Элемент заббикс
perf_counter_en[\LogicalDisk(*)\Avg. Disk sec/Write]
perf_counter_en[\236(*)\210]
perf_counter[\Логический диск(*)\Среднее время записи на диск (с)]
wmi.get[root\cimv2, select AvgDisksecPerWrite FROM Win32_PerfFormattedData_PerfDisk_LogicalDisk WHERE Name='_Total']
AvgDisksecPerTransfer Среднее время обращения к диску - это время в секундах, затрачиваемое в среднем на один обмен данными с диском.
AvgDiskBytesPerRead Средний размер одного чтения с диска (байт) - это среднее количество байт данных, полученных с диска при выполнении операций чтения.
AvgDiskBytesPerTransfer Средний размер одного обмена с диском (байт) - это среднее количество байт данных, переданных при выполнении операций чтения или записи.
AvgDiskBytesPerWrite Средний размер одной записи на диск (байт) - это среднее количество байт данных, переданных на диск при выполнении операций записи.
AvgDiskQueueLength Средняя длина очереди диска - это среднее общее количество запросов на чтение и на запись, которые были поставлены в очередь для соответствующего диска в течение интервала измерения.
AvgDiskReadQueueLength Средняя длина очереди записи на диск - это среднее количество запросов на запись, которые были поставлены в очередь для соответствующего диска в течение интервала измерения.
AvgDiskWriteQueueLength Средняя длина очереди чтения диска - это среднее количество запросов на чтение, которые были поставлены в очередь для соответствующего диска в течение интервала измерения
Caption Название
CurrentDiskQueueLength Текущая длина очереди диска - это количество невыполненных запросов к диску во время сбора сведений о загруженности. Сюда включаются запросы, обслуживаемые
во время проведения замера. Этот показатель представляет собой конкретное текущее значение, и не является средним значением по некоторому интервалу времени.
Многошпиндельные дисковые устройства могут обрабатывать одновременно несколько запросов, остальные имеющиеся запросы будут ожидать обслуживания.
Этот счетчик может отражать постоянные изменения длины очереди, показывая то большую, то малую ее длину, но если имеется перегрузка дискового устройства,
то вероятно, что значение этого счетчика будет большим постоянно. Время задержки обработки запросов пропорционально длине этой очереди минус количество
шпинделей дисковых устройств. Для хорошей производительности системы среднее значение этого счетчика не должно превышать двух.
Description Описание
DiskBytesPersec Скорость обмена с диском (байт/с) - это скорость, с которой происходит обмен данными с этим диском при выполнении операций чтения или записи.
DiskReadBytesPersec Скорость чтения с диска (байт/с) - это скорость, с которой происходит передача данных с этого диска при выполнении операций чтения.
DiskReadBytesPersec Среднее время чтения с диска (с) - это время в секундах, затрачиваемое в среднем на одну операцию чтения данных с диска
DiskReadsPersec
DiskTransfersPersec Среднее время обращения к диску(с) - это время в секундах, затрачиваемое в среднем на один обмен данными с диском.
DiskWritesPersec Среднее время записи на диск (с) - это время в секундах, затрачиваемое в среднем на одну операцию записи данных на диск.
DiskWriteBytesPersec Скорость записи на диск (байт/с) - это скорость, с которой происходит передача данных на этот диск при выполнении операций записи.
FreeMegabytes Свободно мегабайт - показывает объем незанятого пространства на диске в мегабайтах. Один мегабайт равен 1048576 байтам.
Frequency_Object Периодичность(частота) объекта
Frequency_PerfTime Время увеличения частоты
Frequency_Sys100NS
Name Имя
PercentDiskReadTime % активности диска при чтении - Процент активности диска при чтении - это процент времени, затраченного выбранным дисковым устройством на обработку запросов на чтение данных.
PercentDiskTime % активности диска - Процент активности диска - это процент времени, затраченного выбранным дисковым устройством на обработку запросов на чтение и запись данных.
PercentDiskWriteTime % активности диска при записи - Процент активность диска при записи - это процент времени, затраченного выбранным дисковым устройством на обработку запросов на запись данных.
PercentFreeSpace % свободного места - Процент свободного места - это доля свободного места, имеющегося на логическом диске, по отношению к общему объему выбранного логического диска.
PercentIdleTime Процент времени бездействия - Процент времени бездействия говорит о том, какую часть времени интервала измерения диск бездействовал.
SplitIOPerSec Ращеплений ввода-вывода сек - Счетчик расщеплений ввода-вывода/сек - сообщает о частоте, с которой операции ввода-вывода диска оказываются расщепленными на несколько операций ввода-вывода. Расщепление операций ввода-вывода может происходить либо из-за того, что запрошен слишком большой блок данных, который не может быть передан за одну операцию, либо из-за фрагментации диска.
Timestamp_Object
Timestamp_PerfTime
Timestamp_Sys100NS
Обращений записи на диск/сек - это частота выполнения операций записи на этот диск.
Обращений к диску/сек - это частота выполнения операций чтения и записи на этот диск.
Обращений чтения с диска/сек - это частота выполнения операций чтения с этого диска.
Средний размер одного обмена с диском (байт) - это среднее количество байт данных, переданных при выполнении операций чтения или записи.
Средний размер одного чтения с диска (байт) - это среднее количество байт данных, полученных с диска при выполнении операций чтения.
Средний размер одной записи на диск (байт) - это среднее количество байт данных, переданных на диск при выполнении операций записи.
Память
Для того что бы посмотреть количество страниц памяти записанных/считанных с жесткого диска, для хост и гостевых систем
Если значение больше 500, значит либо недостаточно физической памяти, либо используется «битая» планка памяти
Память\Обмен страниц/с
\Memory\Pages/sec
root\CIMV2 Win32_PerfFormattedData_PerfOS_Memory PagesPersec
Элемент заббикс
perf_counter_en[\Memory\Pages/sec]
perf_counter_en[\4\40]
perf_counter[\Память\Обмен страниц/с]
wmi.get[root\cimv2, select PagesPersec FROM Win32_PerfFormattedData_PerfOS_Memory]
Если же вы используете Dynamic Memory, то вам необходимо пользоваться:
15754 Hyper-V Dynamic Memory Balancer Балансировщик динамической памяти Hyper-V
и
15770 Hyper-V Dynamic Memory VM Виртуальная машина с динамической памятью Hyper-V
root\CIMV2 Win32_PerfRawData_BalancerStats_HyperVDynamicMemoryBalancer
root\CIMV2 Win32_PerfRawData_BalancerStats_HyperVDynamicMemoryVM
Элемент заббикс
wmi.get[root\cimv2, select AvailableMemory FROM Win32_PerfFormattedData_BalancerStats_HyperVDynamicMemoryBalancer]
wmi.get[root\cimv2, select .GuestVisiblePhysicalMemory FROM Win32_PerfFormattedData_BalancerStats_HyperVDynamicMemoryVM WHERE Name='Имя ВМ']
\Memory\Pages/sec Кол-во страниц памяти записанных/считанных с жесткого диска, для хост и гостевых систем
Если значение больше 500, значит либо недостаточно физической памяти, либо используется «битая» планка памяти
Это прерывание возникает, когда искомая страница памяти оказывается выгруженной на диск в данный момент. Однако в этот счетчик попадают и рабочие ситуации, связанные с кэшем и отображенными в память (memory-mapped) файлами. Поэтому по нему нельзя однозначно судить о недостатке памяти.
Совместно рассматривать стоит Memory\Pages Input/sec и \Memory\Page Reads/sec
1. \Memory\Pages/sec
2. \Memory\Page Reads/sec - дополнение к 1 (кол-во чтение с диска страниц секунду, при подкачке)
3. \Memory\Pages Input/sec - 2 и 3 расматриваем совместно (кол-во страниц чтения, прочитанных с диска)
4. \Memory\Cache Faults (учитывает промахи подсистемы кэшировани)
5. \Memory\Transition Faults/sec (скорость, с которой обрабатываются так называемые soft faults — ошибки страниц, без обращения к диску, равно кол-ву таких страниц)
6. \Memory\Available MBytes (кол-во доступной процессам Оперативной (физической памяти), ориентировочно должно быть выше 5 000 КВ)
1, 2, 3 - постоянно находятся на высоком уровне, а 4 - а Низком (ОС активно работает с файлом подкачки, это говорит о недостатке памяти)
4 - Высок ( активная работа с большими файлами, это не должно длиться долго)
6. Уменьшение значений свободной Оперативной памяти, сопровождаемое ростом \Memory\Pages/sec и \Memory\Page Reads/sec, может свидетельствовать о недостатке памяти (Постоянное и равномерное уменьшение счетчика указывает на утечку памяти в одном из приложений)
LogicalDisk\Avg. Disk Queue Length , PhysicalDisk\Avg. Disk Queue Length - следят за количеством запросов, стоящих в очереди к диску.
Считается, что если очередь к диску длительное время включает более двух запросов, это может быть индикатором проблемы.
1400 Avg. Disk Queue Length Средняя длина очереди диска
{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Pages/sec].min(5)}>1500 or
{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Pages/sec].min(3m)}>{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Cache Faults/sec].min(3m)} and
{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Page Reads/sec].min(3)}>{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Cache Faults/sec].min(3m)} and
{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Pages Input/sec].min(3)}>{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Cache Faults/sec].min(3m)} and
{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Cache Faults/sec].min(5m)}<190 or
{Microsoft SBORKA server 2008 Hyper-V Host-RUS:perf_counter_en[\Memory\Cache Faults/sec].min(10m)}>1000
+Сеть
root\CIMV2 Win32_PerfFormattedData_Tcpip_NetworkInterface
root\CIMV2 Win32_PerfRawData_Tcpip_NetworkInterface
Для определения числа потоков ждущих сетевого адаптера
Показания всегда должно быть 0, если же оно равно 1 или 2, значит сеть – узкое место в вашей системе.
\Сетевой интерфейс\Длина очереди вывода
\Network Interface(*)\Output Queue Length
\510(*)\544
OutputQueueLength
Пример Ключа заббикс
perf_counter_en[\Network Interface(*)\Output Queue Length]
wmi.get[root\cimv2,"select OutputQueueLength from Win32_PerfFormattedData_Tcpip_NetworkInterface where Name='Intel[R] I350 Gigabit Network Connection'"]
wmi.get[root\cimv2,"select OutputQueueLength from Win32_PerfFormattedData_Tcpip_NetworkInterface where Name='Intel[R] I350 Gigabit Network Connection _2'"]
Общая нагрузка в Байт/сек для интерфейса
\Сетевой интерфейс\Всего байт/с
\Network Interface(*)\Bytes Total/sec
\510(*)\388
BytesTotalPersec
Пример ключа заббикс
perf_counter_en[\Network Interface(*)\Bytes Total/sec]
wmi.get[root\cimv2,"select BytesTotalPersec from Win32_PerfFormattedData_Tcpip_NetworkInterface where Name='Intel[R] I350 Gigabit Network Connection'"]
wmi.get[root\cimv2,"select BytesTotalPersec from Win32_PerfFormattedData_Tcpip_NetworkInterface where Name='Intel[R] I350 Gigabit Network Connection _2'"]
Для того что бы определить какой именно виртуальный сетевой адаптер (какой именно виртуально машины) создает нагрузку
\Виртуальный сетевой адаптер Hyper-V\Байт/сек
\Hyper-V Virtual Network Adapter(*)\Bytes/sec (для каждой виртуальной машины)
\15704(*)\15708
root\CIMV2 Win32_PerfFormattedData_NvspNicStats_HyperVVirtualNetworkAdapter
root\CIMV2 Win32_PerfRawData_NvspNicStats_HyperVVirtualNetworkAdapter
значение берем из BytesPersec ,а имя смотрим в Name
Пример Элемент заббикс
wmi.get[root\cimv2,select BytesSentPersec from Win32_PerfFormattedData_NvspNicStats_HyperVVirtualNetworkAdapter where Name='PowerDNS_Сетевой адаптер_7b7d1101-ba12-48c8-b1e6-b1286d1843b1--68c7afc6-e184-48c4-a053-c0b0d86ff51a']
Для cmd Запрос всей таблицы
wmic.exe /NAMESPACE:\\root\CIMV2 PATH Win32_PerfRawData_NvspNicStats_HyperVVirtualNetworkAdapter
Еще некоторые пути
root\CIMV2 Win32_PerfFormattedData_EthernetPerfProvider_HyperVLegacyNetworkAdapter
+ root\CIMV2 Win32_PerfFormattedData_BalancerStats_HyperVDynamicMemoryBalancer
root\CIMV2 Win32_PerfFormattedData_GmoPerfProvider_HyperVVMSaveSnapshotandRestore
+ root\CIMV2 Win32_PerfFormattedData_HvStats_HyperVHypervisor
+ root\CIMV2 Win32_PerfFormattedData_HvStats_HyperVHypervisorLogicalProcessor
+ root\CIMV2 Win32_PerfFormattedData_HvStats_HyperVHypervisorPartition
root\CIMV2 Win32_PerfFormattedData_HvStats_HyperVHypervisorRootPartition
+ root\CIMV2 Win32_PerfFormattedData_HvStats_HyperVHypervisorRootVirtualProcessor
+ root\CIMV2 Win32_PerfFormattedData_HvStats_HyperVHypervisorVirtualProcessor
root\CIMV2 Win32_PerfFormattedData_IdePerfProvider_HyperVVirtualIDEController
root\CIMV2 Win32_PerfFormattedData_NvspNicStats_HyperVVirtualNetworkAdapter
root\CIMV2 Win32_PerfFormattedData_NvspPortStats_HyperVVirtualSwitchPort
+- root\CIMV2 Win32_PerfFormattedData_NvspSwitchStats_HyperVVirtualSwitch
root\CIMV2 Win32_PerfFormattedData_RemotePerfProvider_HyperVVMRemoting
root\CIMV2 Win32_PerfFormattedData_StorageStats_HyperVVirtualStorageDevice
root\CIMV2 Win32_PerfFormattedData_VidPerfProvider_HyperVVMVidNumaNode
+ root\CIMV2 Win32_PerfFormattedData_VidPerfProvider_HyperVVMVidPartition
root\CIMV2 Win32_PerfFormattedData_VmbusStats_HyperVVirtualMachineBus
+ root\CIMV2 Win32_PerfFormattedData_VmmsVirtualMachineStats_HyperVVirtualMachineHealthSummary
root\CIMV2 Win32_PerfFormattedData_VmmsVirtualMachineStats_HyperVVirtualMachineSummary
root\CIMV2 Win32_PerfFormattedData_VmTaskManagerStats_HyperVTaskManagerDetail
root\CIMV2 Win32_PerfRawData_BalancerStats_HyperVDynamicMemoryBalancer
root\CIMV2 Win32_PerfRawData_BalancerStats_HyperVDynamicMemoryVM
root\CIMV2 Win32_PerfRawData_EthernetPerfProvider_HyperVLegacyNetworkAdapter
root\CIMV2 Win32_PerfRawData_GmoPerfProvider_HyperVVMSaveSnapshotandRestore
root\CIMV2 Win32_PerfRawData_StorageStats_HyperVVirtualStorageDevice
root\CIMV2 Win32_PerfRawData_HvStats_HyperVHypervisor
root\CIMV2 Win32_PerfRawData_HvStats_HyperVHypervisorLogicalProcessor
root\CIMV2 Win32_PerfRawData_HvStats_HyperVHypervisorPartition
root\CIMV2 Win32_PerfRawData_HvStats_HyperVHypervisorRootPartition
root\CIMV2 Win32_PerfRawData_HvStats_HyperVHypervisorRootVirtualProcessor
root\CIMV2 Win32_PerfRawData_HvStats_HyperVHypervisorVirtualProcessor
root\CIMV2 Win32_PerfRawData_IdePerfProvider_HyperVVirtualIDEController
root\CIMV2 Win32_PerfRawData_VidPerfProvider_HyperVVMVidNumaNode
root\CIMV2 Win32_PerfRawData_VidPerfProvider_HyperVVMVidPartition
root\CIMV2 Win32_PerfRawData_VmbusStats_HyperVVirtualMachineBus
root\CIMV2 Win32_PerfRawData_VmmsVirtualMachineStats_HyperVVirtualMachineHealthSummary
root\CIMV2 Win32_PerfRawData_VmmsVirtualMachineStats_HyperVVirtualMachineSummary
root\CIMV2 Win32_PerfRawData_VmTaskManagerStats_HyperVTaskManagerDetail
\root\virtualization
Обнаружение сетевого адаптера Hyper-V
-нету Win32_PerfFormattedData_Tcpip_NetworkAdapter
есть Win32_PerfFormattedData_Tcpip_NetworkInterface
Обнаружение виртуальной машины Hyper-V
+ Win32_PerfFormattedData_BalancerStats_HyperVDynamicMemoryVM
есть Win32_PerfFormattedData_BalancerStats_HyperVDynamicMemoryBalancer instance
Обнаружение сетевого адаптера виртуальной машины Hyper-V
+ Win32_PerfFormattedData_NvspNicStats_HyperVVirtualNetworkAdapter
Обнаружение устройства хранения виртуальной машины Hyper-V
-нету Win32_PerfFormattedData_Counters_HyperVVirtualStorageDevice
есть Win32_PerfFormattedData_StorageStats_HyperVVirtualStorageDevice
есть Win32_PerfRawData_StorageStats_HyperVVirtualStorageDevice
Обнаружение виртуального коммутатора Hyper-V
+ Win32_PerfFormattedData_NvspSwitchStats_HyperVVirtualSwitch
+Win32_PerfRawData_NvspSwitchStats_HyperVVirtualSwitch
- win32_networkadapter
+Win32_NetworkAdapter
+Win32_PnPEntity
+Win32_PerfRawData_NvspNicStats_HyperVVirtualNetworkAdapter
-нету win32_PerfFormattedData_CsvFsPerfProvider_ClusterCSVFileSystem
Выгрузка списком
Get-WmiObject -Namespace root\CIMV2 -List >> spisok.log
Начиная с Windows Server 2008 и вплоть до Windows Server 2008 R2 пространство имен, используемое для управления гипервизором, называлось "root\virtualization" (он же V1)
Windows Server 2012 представила рефакторизованное пространство имен "root\virtualization\v2" (добавить классы utils), предлагая также версию V1 для обратной совместимости с существующими инструментами
2012 R2 кращает поддержку пространства имен V1
Get-VM команда выполняется через модуль повершела в модуле површела запрос идет
Get-WmiObject -computername $Server -NameSpace $HyperVNamespace -Query $WQL | Add-Member -MemberType ALIASPROPERTY -Name "VMElementName" -Value "ElementName" -PassThru
Запрос в WMI идет в \root\virtualization класс Msvm_ComputerSystem например имена виртуалок ElementName
get-vm
Host VMElementName State Up-Time (mS) Owner
Новый вид
Name State CPUUsage(%) MemoryAsigned(M) Uptime Status Version
Счетчики производительности Windows
perf_counter
perf_counter[счетчик,<период>]
perf_counter_en[счетчик,<период>]
perf_instance.discovery[объект]
perf_instance_en.discovery[объект]
regedit, а затем найдите HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009 Counter EN - язык
regedit, а затем найдите HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\019 Counter RU - язык
Путь на конкретные службы HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\%servicename%\Performance
Чтобы получить полный список счетчиков производительности для мониторинга, вы можете выполнить: typeperf -qx
Пример
RU
2 Система
18 Байт записи файлов/с
EN
2 System
18 File Write Bytes/sec
Запрос
zabbix_get -s 192.168.xxx.xxx -k 'perf_counter[\2\18]' ответ45770939.055905
zabbix_get -s 192.168.xxx.xxx -k 'perf_counter_en[\2\18]' ответ 41674909.435581
zabbix_get -s 192.168.xxx.xxx -k 'perf_counter[\Система\Байт записи файлов/с]' ответ 74881757.832684
zabbix_get -s 192.168.xxx.xxx -k 'perf_counter_en[\System\File Write Bytes/sec]' ответ 40644644.840874
zabbix_get -s 192.168.xxx.xxx -k 'perf_counter_en[\Hyper-V Hypervisor Logical Processor(Hv LP 0)\% Total Run Time]'
ответ 29.749775
16012 Раздел низкоуровневой оболочки Hyper-V
16012 Hyper-V Hypervisor Partition
Запрос элемента
perf_counter[\Раздел низкоуровневой оболочки Hyper-V]
perf_counter_en[\Hyper-V Hypervisor Partition]
perf_counter[\16012]
или
15306 Hyper-V Hypervisor
15310 Partitions
perf_counter_en[\Hyper-V Hypervisor\Partitions]
perf_counter_en[\15306\15310]
Выборка чисто по слову Hyper без подразделов
RU
15654 Порт виртуального коммутатора Hyper-V
15318 Логический процессор низкоуровневой оболочки Hyper-V
15306 Низкоуровневая оболочка Hyper-V
15370 Корневой раздел низкоуровневой оболочки Hyper-V
15396 Корневой виртуальный процессор низкоуровневой оболочки Hyper-V
16012 Раздел низкоуровневой оболочки Hyper-V
16038 Виртуальный процессор низкоуровневой оболочки Hyper-V
16382 Удаленное взаимодействие Hyper-V VM
16402 Диспетчер памяти рабочего процесса виртуальной машины Hyper-V
15704 Виртуальный сетевой адаптер Hyper-V
16366 Виртуальный IDE-контроллер Hyper-V
16352 Устаревший сетевой адаптер Hyper-V
15792 Шина VMBus Hyper-V
15770 Виртуальная машина с динамической памятью Hyper-V
15754 Балансировщик динамической памяти Hyper-V
16388 Восстановление, снимок и сохранение виртуальной машины Hyper-V
15852 Сведения о диспетчере задач Hyper-V
15998 Виртуальное запоминающее устройство Hyper-V
15592 Виртуальный коммутатор Hyper-V
15584 Узел NUMA VID виртуальной машины Hyper-V
15574 Драйвер Hyper-V VM Vid
16216 Раздел Hyper-V VM Vid
16338 Очередь сообщений VID виртуальной машины Hyper-V
16376 Hyper-V VM IO APIC
15846 Сводные данные о работоспособности виртуальных машинах Hyper-V
15800 Сводные данные о виртуальных машинах Hyper-V
EN
15654 Hyper-V Virtual Switch Port
15318 Hyper-V Hypervisor Logical Processor
15324 Hypervisor Run Time
15362 % Hypervisor Run Time
15306 Hyper-V Hypervisor
15370 Hyper-V Hypervisor Root Partition
15396 Hyper-V Hypervisor Root Virtual Processor
15400 Hypervisor Run Time
15402 Hypercalls/sec
15404 Hypercalls Cost
15512 GPA Space Hypercalls/sec
15514 Logical Processor Hypercalls/sec
15516 Long Spin Wait Hypercalls/sec
15518 Other Hypercalls/sec
15520 Synthetic Interrupt Hypercalls/sec
15522 Virtual Interrupt Hypercalls/sec
15524 Virtual MMU Hypercalls/sec
15526 Virtual Processor Hypercalls/sec
15532 % Hypervisor Run Time
15546 Hypercalls Base
16012 Hyper-V Hypervisor Partition
16038 Hyper-V Hypervisor Virtual Processor
16042 Hypervisor Run Time
16044 Hypercalls/sec
16046 Hypercalls Cost
16154 GPA Space Hypercalls/sec
16156 Logical Processor Hypercalls/sec
16158 Long Spin Wait Hypercalls/sec
16160 Other Hypercalls/sec
16162 Synthetic Interrupt Hypercalls/sec
16164 Virtual Interrupt Hypercalls/sec
16166 Virtual MMU Hypercalls/sec
16168 Virtual Processor Hypercalls/sec
16174 % Hypervisor Run Time
16188 Hypercalls Base
16382 Hyper-V VM Remoting
16402 Hyper-V VM worker Process Memory Manager
15704 Hyper-V Virtual Network Adapter
16366 Hyper-V Virtual IDE Controller
16352 Hyper-V Legacy Network Adapter
15792 Hyper-V Virtual Machine Bus
15770 Hyper-V Dynamic Memory VM
15754 Hyper-V Dynamic Memory Balancer
16388 Hyper-V VM Save, Snapshot, and Restore
15852 Hyper-V Task Manager Detail
15998 Hyper-V Virtual Storage Device
15592 Hyper-V Virtual Switch
15584 Hyper-V VM Vid Numa Node
15574 Hyper-V VM Vid Driver
16216 Hyper-V VM Vid Partition
16338 Hyper-V VM Vid Message Queue
16376 Hyper-V VM IO APIC
15846 Hyper-V Virtual Machine Health Summary
15800 Hyper-V Virtual Machine Summary
Сравнение данных Windows 10 и 2008
Показать
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName "replica"
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "get" -Key "host_stat" -Value "all"
{
"VMsMemoryMinimum": 536870912,
"VMsMemoryMaximum": 1099511627776,
"VMsMemoryDemand": 0,
"VMsMemoryAssigned": 0,
"VMsStateOff": 1,
"VMsStateRunning": 0,
"VMsStateSaved": 0,
"VMsStatePaused": 0,
"VMsStateOther": 0
}
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vsw" -Value ""
{
"data": [
{
"{#VIRTUAL_SWITCH_NAME}": "Default Switch"
}
]
}
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" - Key "vm" -Value ""
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "va" -Value ""
{
"data": [
{
"{#HYPERV_NETWORKADAPTER_NAME}": "vEthernet (Default Switch)",
"{#HYPERV_NETWORKADAPTER_PERF}": "Hyper-V Virtual Ethernet Adapter",
"{#HYPERV_NETWORKADAPTER_INTERFACEINDEX}": 24
}
]
}
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm_na" -Value ""
{
"data": [
]
}
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm_sd" -Value ""
{
"data": [
]
}
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica_discover -ActionType "" -Key "" -Value ""
{
"data":[
]
}
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica -ActionType "health"
3
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica -ActionType "lastsync"
ошибка с датой, так как нет репликаций и соответсвено ее даты
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName windowscsvfs -ActionType "name" -Key "" -Value ""
Нет кластеров
Get-WmiObject : Invalid class "win32_PerfFormattedData_CsvFsPerfProvider_ClusterCSVFileSystem"
At C:\zabbix\Scripts\HyperV.ps1:360 char:11
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName windowscsvfs -ActionType "path" -Key "" -Value ""
Нет кластеров
Get-ClusterSharedVolume : The term 'Get-ClusterSharedVolume' is not
At C:\zabbix\Scripts\HyperV.ps1:330 char:12
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName ms.hyperv -ActionType "full" -Key "" -Value ""
{"Test":{"NumaSockets":1,"ReplMode":0,"CritErrAction":1,"IntSvcState":2,"ReplHealth":0,"State":3,"ReplState":0,"NumaNodes":1,"CPUUsage":0,"IntSvcVer":"0.0","StartAction":3,"IsClustered":0,"Uptime":0,"Memory":0,"StopAction":3}}
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName ms.hyperv -ActionType "lld" -Key "" -Value ""
{"data":[{"{#VM.NAME}":"Test","{#VM.VERSION}":"9.0","{#VM.CLUSTERED}":0,"{#VM.HOST}":"COMPTV","{#VM.GEN}":1,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":""}]}
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "get" -Key "host_stat" -Value "all"
{
"VMsMemoryMinimum": 536870912,
"VMsMemoryMaximum": 1099511627776,
"VMsMemoryDemand": 0,
"VMsMemoryAssigned": 0,
"VMsStateOff": 1,
"VMsStateRunning": 0,
"VMsStateSaved": 0,
"VMsStatePaused": 0,
"VMsStateOther": 0
}
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vsw" -Value ""
{
"data": [
{
"{#VIRTUAL_SWITCH_NAME}": "Default Switch"
}
]
}
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" - Key "vm" -Value ""
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "va" -Value ""
{
"data": [
{
"{#HYPERV_NETWORKADAPTER_NAME}": "vEthernet (Default Switch)",
"{#HYPERV_NETWORKADAPTER_PERF}": "Hyper-V Virtual Ethernet Adapter",
"{#HYPERV_NETWORKADAPTER_INTERFACEINDEX}": 24
}
]
}
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm_na" -Value ""
{
"data": [
]
}
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm_sd" -Value ""
{
"data": [
]
}
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica_discover -ActionType "" -Key "" -Value ""
{
"data":[
]
}
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica -ActionType "health"
3
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica -ActionType "lastsync"
ошибка с датой, так как нет репликаций и соответсвено ее даты
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName windowscsvfs -ActionType "name" -Key "" -Value ""
Нет кластеров
Get-WmiObject : Invalid class "win32_PerfFormattedData_CsvFsPerfProvider_ClusterCSVFileSystem"
At C:\zabbix\Scripts\HyperV.ps1:360 char:11
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName windowscsvfs -ActionType "path" -Key "" -Value ""
Нет кластеров
Get-ClusterSharedVolume : The term 'Get-ClusterSharedVolume' is not
At C:\zabbix\Scripts\HyperV.ps1:330 char:12
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName ms.hyperv -ActionType "full" -Key "" -Value ""
{"Test":{"NumaSockets":1,"ReplMode":0,"CritErrAction":1,"IntSvcState":2,"ReplHealth":0,"State":3,"ReplState":0,"NumaNodes":1,"CPUUsage":0,"IntSvcVer":"0.0","StartAction":3,"IsClustered":0,"Uptime":0,"Memory":0,"StopAction":3}}
C:\WINDOWS\system32>powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName ms.hyperv -ActionType "lld" -Key "" -Value ""
{"data":[{"{#VM.NAME}":"Test","{#VM.VERSION}":"9.0","{#VM.CLUSTERED}":0,"{#VM.HOST}":"COMPTV","{#VM.GEN}":1,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":""}]}
Ответ из скрипта и команд
Показать
Общий скрипт
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName "replica"
Get-VMReplication : The term 'Get-VMReplication' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
lling of the name, or if a path was included, verify that the path is correct and try again.
At C:\zabbix\Scripts\HyperV.ps1:21 char:12
+ $replica = Get-VMReplication | select Health
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-VMReplication:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "get" -Key "host_stat" -Value "all"
Ответ
{
"VMsMemoryMinimum": 0,
"VMsMemoryMaximum": 0,
"VMsMemoryDemand": 0,
"VMsMemoryAssigned": 0,
"VMsStateOff": 0,
"VMsStateRunning": 0,
"VMsStateSaved": 0,
"VMsStatePaused": 0,
"VMsStateOther": 6
}
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vsw" -Value ""
Ответ
{
"data": [
{
"{#VIRTUAL_SWITCH_NAME}": "???????°N? ????N€N‚N??°?»N????°N? N??µN‚N?"
}
]
}
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" - Key "vm" -Value ""
Ответ
{
"data": [
]
}
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "va" -Value ""
Ответ
{
"data": [
]
}
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm_na" -Value ""
Ответ
{
"data": [
]
}
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm_sd" -Value ""
Ответ
Get-WmiObject : Invalid class "Win32_PerfFormattedData_Counters_HyperVVirtualStorageDevice"
At C:\zabbix\Scripts\HyperV.ps1:149 char:28
+ ... kadapters = Get-WmiObject Win32_PerfFormattedData_Counters_HyperVVirt ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidType: (:) [Get-WmiObject], ManagementException
+ FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
{
"data": [
]
}
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica_discover -ActionType"" -Key "" -Value ""
Ответ
Get-VMReplication : The term 'Get-VMReplication' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spe
lling of the name, or if a path was included, verify that the path is correct and try again.
At C:\zabbix\Scripts\HyperV.ps1:259 char:12
+ $LDDSRV = (Get-VMReplication).Name
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-VMReplication:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
{
"data":[
]
}
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName windowscsvfs -ActionType "name" -Key "" -Value ""
Ответ (Нет кластеров)
Get-WmiObject : Invalid class "win32_PerfFormattedData_CsvFsPerfProvider_ClusterCSVFileSystem"
At C:\zabbix\Scripts\HyperV.ps1:360 char:11
+ $LDDCSV = Get-WmiObject win32_PerfFormattedData_CsvFsPerfProvider_Clu ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidType: (:) [Get-WmiObject], ManagementException
+ FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
{
"data":[
]
}
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName windowscsvfs -ActionType "path" -Key "" -Value ""
Ответ (Нет кластеров)
Get-ClusterSharedVolume : The term 'Get-ClusterSharedVolume' is not recognized as the name of a cmdlet, function, script file, or operable program. C
heck the spelling of the name, or if a path was included, verify that the path is correct and try again.
At C:\zabbix\Scripts\HyperV.ps1:330 char:12
+ $LDDCSV = (Get-ClusterSharedVolume).Name
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-ClusterSharedVolume:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
{
"data":[
]
}
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName ms.hyperv -ActionType "full" -Key "" -Value ""
отдельные команды проверки
Get-VM -ComputerName Server1 | Where-Object {$_.State -eq 'Running'}
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName ms.hyperv -ActionType "lld" -Key "" -Value ""
Ответ
{"data":[{"{#VM.NAME}":null,"{#VM.VERSION}":null,"{#VM.CLUSTERED}":0,"{#VM.HOST}":null,"{#VM.GEN}":null,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":null},{"{#VM
.NAME}":null,"{#VM.VERSION}":null,"{#VM.CLUSTERED}":0,"{#VM.HOST}":null,"{#VM.GEN}":null,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":null},{"{#VM.NAME}":null,"{
#VM.VERSION}":null,"{#VM.CLUSTERED}":0,"{#VM.HOST}":null,"{#VM.GEN}":null,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":null},{"{#VM.NAME}":null,"{#VM.VERSION}":n
ull,"{#VM.CLUSTERED}":0,"{#VM.HOST}":null,"{#VM.GEN}":null,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":null},{"{#VM.NAME}":null,"{#VM.VERSION}":null,"{#VM.CLUST
ERED}":0,"{#VM.HOST}":null,"{#VM.GEN}":null,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":null},{"{#VM.NAME}":null,"{#VM.VERSION}":null,"{#VM.CLUSTERED}":0,"{#VM.
HOST}":null,"{#VM.GEN}":null,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":null}]}
Отдельные команды проверки
Запрос
Get-VM | Select-Object @{Name = "{#VM.NAME}"; e={$_.VMName}}
{#VM.NAME}
----------
Запрос
Get-VM | Select-Object @{Name = "{#VM.NAME}"; e={$_.VMElementName}}
{#VM.NAME}
----------
GLPI-OCS
CERTSDB
WEBSERV-BTRX
PowerDNS
DrWeb
test
Запрос
Get-VM
Host VMElementName State Up-Time (m
----- ------------- ----- ------------
FILESERVER1 GLPI-OCS Running 484249023
FILESERVER1 CERTSDB Running 484224492
FILESERVER1 WEBSERV-BTRX Stopped 0
FILESERVER1 PowerDNS Running 484209450
FILESERVER1 DrWeb Running 484204405
FILESERVER1 test Stopped 0
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName "replica"
Get-VMReplication : The term 'Get-VMReplication' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
lling of the name, or if a path was included, verify that the path is correct and try again.
At C:\zabbix\Scripts\HyperV.ps1:21 char:12
+ $replica = Get-VMReplication | select Health
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-VMReplication:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "get" -Key "host_stat" -Value "all"
Ответ
{
"VMsMemoryMinimum": 0,
"VMsMemoryMaximum": 0,
"VMsMemoryDemand": 0,
"VMsMemoryAssigned": 0,
"VMsStateOff": 0,
"VMsStateRunning": 0,
"VMsStateSaved": 0,
"VMsStatePaused": 0,
"VMsStateOther": 6
}
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vsw" -Value ""
Ответ
{
"data": [
{
"{#VIRTUAL_SWITCH_NAME}": "???????°N? ????N€N‚N??°?»N????°N? N??µN‚N?"
}
]
}
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" - Key "vm" -Value ""
Ответ
{
"data": [
]
}
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "va" -Value ""
Ответ
{
"data": [
]
}
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm_na" -Value ""
Ответ
{
"data": [
]
}
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv.host -ActionType "discover" -Key "vm_sd" -Value ""
Ответ
Get-WmiObject : Invalid class "Win32_PerfFormattedData_Counters_HyperVVirtualStorageDevice"
At C:\zabbix\Scripts\HyperV.ps1:149 char:28
+ ... kadapters = Get-WmiObject Win32_PerfFormattedData_Counters_HyperVVirt ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidType: (:) [Get-WmiObject], ManagementException
+ FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
{
"data": [
]
}
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName hyperv_replica_discover -ActionType"" -Key "" -Value ""
Ответ
Get-VMReplication : The term 'Get-VMReplication' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spe
lling of the name, or if a path was included, verify that the path is correct and try again.
At C:\zabbix\Scripts\HyperV.ps1:259 char:12
+ $LDDSRV = (Get-VMReplication).Name
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-VMReplication:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
{
"data":[
]
}
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName windowscsvfs -ActionType "name" -Key "" -Value ""
Ответ (Нет кластеров)
Get-WmiObject : Invalid class "win32_PerfFormattedData_CsvFsPerfProvider_ClusterCSVFileSystem"
At C:\zabbix\Scripts\HyperV.ps1:360 char:11
+ $LDDCSV = Get-WmiObject win32_PerfFormattedData_CsvFsPerfProvider_Clu ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidType: (:) [Get-WmiObject], ManagementException
+ FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
{
"data":[
]
}
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName windowscsvfs -ActionType "path" -Key "" -Value ""
Ответ (Нет кластеров)
Get-ClusterSharedVolume : The term 'Get-ClusterSharedVolume' is not recognized as the name of a cmdlet, function, script file, or operable program. C
heck the spelling of the name, or if a path was included, verify that the path is correct and try again.
At C:\zabbix\Scripts\HyperV.ps1:330 char:12
+ $LDDCSV = (Get-ClusterSharedVolume).Name
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-ClusterSharedVolume:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
{
"data":[
]
}
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName ms.hyperv -ActionType "full" -Key "" -Value ""
отдельные команды проверки
Get-VM -ComputerName Server1 | Where-Object {$_.State -eq 'Running'}
Запрос
powershell -NoProfile -ExecutionPolicy Bypass -File "C:\zabbix\Scripts\HyperV.ps1" -BlockName ms.hyperv -ActionType "lld" -Key "" -Value ""
Ответ
{"data":[{"{#VM.NAME}":null,"{#VM.VERSION}":null,"{#VM.CLUSTERED}":0,"{#VM.HOST}":null,"{#VM.GEN}":null,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":null},{"{#VM
.NAME}":null,"{#VM.VERSION}":null,"{#VM.CLUSTERED}":0,"{#VM.HOST}":null,"{#VM.GEN}":null,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":null},{"{#VM.NAME}":null,"{
#VM.VERSION}":null,"{#VM.CLUSTERED}":0,"{#VM.HOST}":null,"{#VM.GEN}":null,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":null},{"{#VM.NAME}":null,"{#VM.VERSION}":n
ull,"{#VM.CLUSTERED}":0,"{#VM.HOST}":null,"{#VM.GEN}":null,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":null},{"{#VM.NAME}":null,"{#VM.VERSION}":null,"{#VM.CLUST
ERED}":0,"{#VM.HOST}":null,"{#VM.GEN}":null,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":null},{"{#VM.NAME}":null,"{#VM.VERSION}":null,"{#VM.CLUSTERED}":0,"{#VM.
HOST}":null,"{#VM.GEN}":null,"{#VM.ISREPLICA}":0,"{#VM.NOTES}":null}]}
Отдельные команды проверки
Запрос
Get-VM | Select-Object @{Name = "{#VM.NAME}"; e={$_.VMName}}
{#VM.NAME}
----------
Запрос
Get-VM | Select-Object @{Name = "{#VM.NAME}"; e={$_.VMElementName}}
{#VM.NAME}
----------
GLPI-OCS
CERTSDB
WEBSERV-BTRX
PowerDNS
DrWeb
test
Запрос
Get-VM
Host VMElementName State Up-Time (m
----- ------------- ----- ------------
FILESERVER1 GLPI-OCS Running 484249023
FILESERVER1 CERTSDB Running 484224492
FILESERVER1 WEBSERV-BTRX Stopped 0
FILESERVER1 PowerDNS Running 484209450
FILESERVER1 DrWeb Running 484204405
FILESERVER1 test Stopped 0