Очень мне хотелось видеть в zabbix данные с видеокарт — температуру, скорость вращения вентилятора ну и загрузку. Несколько статей нашел как собирать такие данные с процессора и системной платы, но они не срабатывали на видеокартах. Однако на основании этих статей и комментариев к ним и получилось мое решение. Ссылки на статьи будут внизу.
Использовать будем free open source software - Open Hardware Monitor, и ее консольную версию.
Распаковываем консольную версию на компе, который хотим мониторить, открываем cmd и выполняем команду
1 | D:\путь\до\папки\OpenHardwareMonitorReport.exe > d:\info.txt |
Так мы соберем в текстовый файл все параметры системы, которые сможем отслеживать в заббиксе. Примерно это будет выглядеть вот так:
Меня в данном случае интересуют параметры видеокарт
/atigpu/0/temperature/0 — температура первой карты, /atigpu/0/fan/0 — обороты вентилятора, /atigpu/0/load/0 — загрузка процессора. Для второй и последующих карт меняется только одна цифра.
Теперь создаем скрипт PowerShell
1 2 | param($hw, $hwid, $sensor, $sensorid) (Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor | ?{$_.identifier -eq «/$hw/$hwid/$sensor/$sensorid»}).value |
Сохраняем его к примеру на диск D, в папку monitoring, с именем monitoring.ps1.
Кстати, сразу стоит разрешить выполнение скриптов PowerShell, которые не подписаны... Открываем консоль PowerShell от админа и выполняем команду
1 | Set-ExecutionPolicy RemoteSigned |
На вопрос уверены ли мы — отвечаем Y-yes
Теперь в файле конфигурации агента на этой же машине добавляем пользовательский параметр:
1 | UserParameter=system.sensor[*],powershell.exe D:\monitoring\monitoring.ps1 $1 $2 $3 $4 |
Запускаем агент на этой машине.
Теперь настраиваем Zabbix сервер. Я создал отдельный шаблон, в нем группы данных, данные и в процессе пока еще триггеры. Чуть позже приложу сюда готовый шаблон. Опишу лишь процесс создания элементов данных
Имя элемента — к примеру GPU1 Temperature
Ключ элемента - system.sensor[atigpu,0,temperature,0] (данные из текстового файла). Остальные параметры на свой вкус.
Примерный набор параметров у меня для 4 видеокарт получился таким:
system.sensor[atigpu,0,temperature,0]
system.sensor[atigpu,6,temperature,0]
system.sensor[atigpu,12,temperature,0]
system.sensor[atigpu,18,temperature,0]
system.sensor[atigpu,0,fan,0]
system.sensor[atigpu,6,fan,0]
system.sensor[atigpu,12,fan,0]
system.sensor[atigpu,18,fan,0]
system.sensor[atigpu,0,load,0]
system.sensor[atigpu,6,load,0]
system.sensor[atigpu,12,load,0]
system.sensor[atigpu,18,load,0]
Все. Цепляем к нужному хосту этот шаблон и смотрим на данные.
Ну а дальше уже триггеры и все что хочется по желанию.
Ссылки на источники:
Zabbix настройка мониторинга температуры, PowerShell. Выполнение скриптов запрещено для данной системы
Обновился OpenHardwareMonitorReport
github.com/openhardwaremo...nitor/issues/776
github.com/openhardwaremo...onitorReport.zip
Собрал ферму на nvidia 1060, запустилвсе тоже самое, только в шаблоне поменял датчики на
-system.sensor[nvidiagpu,0,temperature,0]
-system.sensor[nvidiagpu,1,temperature,0]
-system.sensor[nvidiagpu,2,temperature,0]
и т.д., все работает!
| ± GPU Core : 58 58 58 (/nvidiagpu/0/temperature/0)
Разве не эти данные?
Сам видишь, нет инф. температуре.
При этос сам скрипт monitoring.ps1 выглядет так:
param ($hw, $hwid, $sensor, $sensorid)
(Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor | ?{$_.identifier -eq «/$hw/$hwid/$sensor/$sensorid»}).value
т.е. ничего здесь не менял.
Вывод OpenHardwareMonitor.exe касательно одной из видеокарт такой:
NVIDIA GeForce GTX 1060 6GB (/nvidiagpu/0)
| ± GPU Core : 1936 1936 1936 (/nvidiagpu/0/clock/0)
| ± GPU Memory : 4100.63 4100.63 4100.63 (/nvidiagpu/0/clock/1)
| ± GPU Shader : 3872 3872 3872 (/nvidiagpu/0/clock/2)
| ± GPU Core : 58 58 58 (/nvidiagpu/0/temperature/0)
| ± GPU Core : 87 87 99 (/nvidiagpu/0/load/0)
| ± GPU Memory Controller : 94 94 100 (/nvidiagpu/0/load/1)
| ± GPU Video Engine : 0 0 0 (/nvidiagpu/0/load/2)
| ± GPU Memory : 42.1053 42.1053 42.1053 (/nvidiagpu/0/load/3)
| ± GPU : 1413 1392 1413 (/nvidiagpu/0/fan/0)
| ± GPU Fan : 59 59 59 (/nvidiagpu/0/control/0)
| ± GPU Memory Free : 3557.05 3557.05 3557.05 (/nvidiagpu/0/smalldata/1)
| ± GPU Memory Used : 2586.95 2586.95 2586.95 (/nvidiagpu/0/smalldata/2)
| ± GPU Memory Total : 6144 6144 6144 (/nvidiagpu/0/smalldata/3)
|
Просьба подсказать в чем ошибка.
Установлены 6 карт Nvidia 1060 на Windows 10 Pro, OpenHardwareMonitor.exe запущен.
Сделал все как здесь указано, только подправил вместо [atigpu,0,temperature,0] на [nvidiagpu,0,temperature,0].
В Zabbix выдается ошибка на вкладке Latest Data касательно графа.
При попытке вручную запустить в PowerShell скрипта monitoring.ps1 на этом же Windows выдается ошибка:
PS C:\monitoring> .\monitoring.ps1
At C:\monitoring\monitoring.ps1:2 char:87
+ ... Root\OpenHardwareMonitor -Class sensor | ?{$_.identifier -eq В«/$hw/ ...
+ ~
You must provide a value expression following the '-eq' operator.
At C:\monitoring\monitoring.ps1:2 char:88
+ ... sensor | ?{$_.identifier -eq В«/$hw/$hwid/$sensor/$sensoridВ»}).value
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unexpected token 'В«/$hw/$hwid/$sensor/$sensoridВ»' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : ExpectedValueExpression
Сперва нужно узнать какая программа сможет мониторить нужный параметр и есть ли возможность к ней запросы отправлять
«менять программу для мониторинга. нечего сложного нет.» — на какую, например?
менять программу для мониторинга. нечего сложного нет.
А если эта утилита не показывает при выводе данные по видеокарте вообще? Я ее запустил, что консольная версия, что GUI, но нигде нет данных по видеокарте (обычная встроенная Intel Graphics 620 на ноутбуке).
А мне нужно именно мониторить ситуацию по видекарте в основном.
Проблема вылезла, через powershell шлёт данные с запятой, zabbix на него ругаеться. Для наглядности: ключ system.sensor[intelcpu,0,load,0] выводит почти всегда
Received value [26,15384] is not suitable for value type [Numeric (float)], но если придёт целое число то примет данные, в основном это 100% нагрузка на графике показывает прерывесто. Если использовать cmd метод то данные получатю с точкой, zabbix все их нормально принимает. Склоняють к: скрипт должен сам заменять запятые на точки. Осталось дописать.
Да, забыл указать, прога должна быть запущенна.
ошибки при копипастах
в monitoring.ps1 должно быть " вместо <>
У меня без запущеной OpenHardwareMonitor.exe показания никак не брались