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. Внедренец

    Собрал фер­му на nvidia 1060, запу­сти­л­в­се тоже самое, толь­ко в шаб­лоне поме­нял дат­чи­ки на
    ‑system.sensor[nvidiagpu,0,temperature,0]
    ‑system.sensor[nvidiagpu,1,temperature,0]
    ‑system.sensor[nvidiagpu,2,temperature,0]
    и т.д., все рабо­та­ет!

  2. 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)
    |

  3. 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

  4. алекслибе

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

  5. Alexey

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

  6. алекслибе

    менять про­грам­му для мони­то­рин­га. нече­го слож­но­го нет.

  7. Alexey

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

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

  8. Алекслибе

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

  9. Алекслибе

    ошиб­ки при копи­пас­тах
    в monitoring.ps1 долж­но быть ” вме­сто <>

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*