Zabbix, температура видеокарты и другие данные

Автор: | 31 марта 2017

Очень мне хотелось видеть в zabbix данные с видеокарт — температуру, скорость вращения вентилятора ну и загрузку. Несколько статей нашел как собирать такие данные с процессора и системной платы, но они не срабатывали на видеокартах. Однако на основании этих статей и комментариев к ним и получилось мое решение. Ссылки на статьи будут внизу.

Использовать будем free open source software - Open Hardware Monitor, и ее консольную версию

Распаковываем консольную версию на компе, который хотим мониторить, открываем cmd и выполняем команду

Так мы соберем в текстовый файл все параметры системы, которые сможем отслеживать в заббиксе. Примерно это будет выглядеть вот так:

Меня в данном случае интересуют параметры видеокарт 

/atigpu/0/temperature/0 — температура первой карты, /atigpu/0/fan/0 — обороты вентилятора, /atigpu/0/load/0 — загрузка процессора. Для второй и последующих карт меняется только одна цифра.

Теперь создаем скрипт PowerShell

Сохраняем его к примеру на диск D, в папку monitoring, с именем monitoring.ps1.

Кстати, сразу стоит разрешить выполнение скриптов PowerShell, которые не подписаны... Открываем консоль PowerShell от админа и выполняем команду

На вопрос уверены ли мы — отвечаем Y-yes

Теперь в файле конфигурации агента на этой же машине добавляем пользовательский параметр:

Запускаем агент на этой машине.

Теперь настраиваем 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. Выполнение скриптов запрещено для данной системы

Zabbix, температура видеокарты и другие данные: 13 комментариев

  1. Алекслибе

    ошибки при копипастах

    в monitoring.ps1 должно быть " вместо <>

    У меня без запущеной OpenHardwareMonitor.exe показания никак не брались

  2. Алекслибе

    Проблема вылезла, через powershell шлёт данные с запятой, zabbix на него ругаеться. Для наглядности: ключ system.sensor[intelcpu,0,load,0] выводит почти всегда

    Received value [26,15384] is not suitable for value type [Numeric (float)], но если придёт целое число то примет данные, в основном это 100% нагрузка на графике показывает прерывесто. Если использовать cmd метод то данные получатю с точкой, zabbix все их нормально принимает. Склоняють к: скрипт должен сам заменять запятые на точки. Осталось дописать.

  3. Alexey

    А если эта утилита не показывает при выводе данные по видеокарте вообще? Я ее запустил, что консольная версия, что GUI, но нигде нет данных по видеокарте (обычная встроенная Intel Graphics 620 на ноутбуке).

    А мне нужно именно мониторить ситуацию по видекарте в основном.

  4. Alexey

    «менять программу для мониторинга. нечего сложного нет.» — на какую, например?

  5. алекслибе

    Сперва нужно узнать какая программа сможет мониторить нужный параметр и есть ли возможность к ней запросы отправлять

  6. Alexey

    Просьба подсказать в чем ошибка.

    Установлены 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

  7. Alexey

    При этос сам скрипт 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)

    |

  8. Внедренец

    Собрал ферму на nvidia 1060, запустилвсе тоже самое, только в шаблоне поменял датчики на

    -system.sensor[nvidiagpu,0,temperature,0]

    -system.sensor[nvidiagpu,1,temperature,0]

    -system.sensor[nvidiagpu,2,temperature,0]

    и т.д., все работает!

Добавить комментарий

Ваш адрес email не будет опубликован.

*