Войти в IT
Есть различные данные, которые хотелось бы снимать с Windows и накапливать в системе мониторинга, но штатные способы не подходят или не работают, например, температурные датчики, или источники бесперебойного питания подключенные по USB
В моем случае оказался подключен ИБП APC Smart 750, штатная утилита APC PowerChute работала мягко говоря плохо, зачастую просто вылетая.
AIDA64 в свою очередь видела всю необходимую информацию с него, работает стабильно, хоть и потребляет немного больше ресурсов.
Для начала запускаем AIDA64, убеждаемся что данные нам видны, затем переходим в настройки, переходим во внешние приложения, затем ставим галку на “Разрешить запись показаний датчиков в WMI”
Также ниже галочками выбираем необходимые показания и применяем настройки
Настройка AIDA64 закончена, теперь все данные будут отправляться в WMI , откуда их можно подхватывать, так как мы находимся в Windows с установленным Zabbix-агентом, то будет логично запускать агентом PowerShell команду для извлечения данных
Для этого откроем PowerShell и вставим команду, которая покажет доступные данные
Get-WmiObject -Namespace 'Root\WMI' -Class AIDA64_SensorValues | Select-Object id, label, value
Видим что данные по ИБП, а заодно я выставлял температурные данные, нам показываются
Нас интересует id, именно по нему будет доставать конкретную метрику командой
Get-WmiObject -Namespace 'Root\WMI' -Class AIDA64_SensorValues | Where-Object id -EQ VBATTINP | Select-Object -ExpandProperty value
Где VBATTINP это id входящего напряжения, заменяя id можно получить искомое значение
Далее редактируем конфигурационный файл zabbix_agent.conf, который по умолчанию хранится C:/Program Files/Zabbix Agent (открыть файл нужно от имени Администратора)
Вставляем пользовательские параметры, в моем случае я снимаю 7 метрик, поэтому в конце файла добавляю
UserParameter = inputVoltage, powershell.exe -noprofile -executionpolicy bypass -Command "Get-WmiObject -Namespace 'Root\WMI' -Class AIDA64_SensorValues | Where-Object id -EQ VBATTINP | Select-Object -ExpandProperty value"
UserParameter = nagruzkaVprocentah, powershell.exe -noprofile -executionpolicy bypass -Command "Get-WmiObject -Namespace 'Root\WMI' -Class AIDA64_SensorValues | Where-Object id -EQ SBATTPWRLOADPERC | Select-Object -ExpandProperty value"
UserParameter = OutputVoltage, powershell.exe -noprofile -executionpolicy bypass -Command "Get-WmiObject -Namespace 'Root\WMI' -Class AIDA64_SensorValues | Where-Object id -EQ VBATTOUTP | Select-Object -ExpandProperty value"
UserParameter = PowerState, powershell.exe -noprofile -executionpolicy bypass -Command "Get-WmiObject -Namespace 'Root\WMI' -Class AIDA64_SensorValues | Where-Object id -EQ SPWRSTATE | Select-Object -ExpandProperty value"
UserParameter = VremiaRabotiOtBattery, powershell.exe -noprofile -executionpolicy bypass -Command "Get-WmiObject -Namespace 'Root\WMI' -Class AIDA64_SensorValues | Where-Object id -EQ SESTBATTTIME | Select-Object -ExpandProperty value"
UserParameter = ZaryadBattery, powershell.exe -noprofile -executionpolicy bypass -Command "Get-WmiObject -Namespace 'Root\WMI' -Class AIDA64_SensorValues | Where-Object id -EQ SBATTLVL | Select-Object -ExpandProperty value"
UserParameter = TempCPU, powershell.exe -noprofile -executionpolicy bypass -Command "Get-WmiObject -Namespace 'Root\WMI' -Class AIDA64_SensorValues | Where-Object id -EQ TCPUPKG | Select-Object -ExpandProperty value"
В каждой строке можно поменять ключ-слово после =, по нему будем добавлять элемент данных в Zabbix, оно может быть любым понятным вам, и id который искали выше
Сохраняем файл, перезапускаем службу и переходим к Zabbix серверу, где добавляем новый элемент данных или в имеющемся узле, или создаем новый
В моем случае создаю новый Узел сети под названием APC без шаблона, внутри узла создаю новые элементы данных, где вставляю ключи, которые задавали в файле zabbix_agent.conf
Далее на ваше усмотрение можно добавить триггеры для оповещения, изменить интервалы снятия метрик и т.д.