Появилась у меня потребность мониторить температуру windows серверов в Zabbix. Из систем мониторинга он мне больше всего нравится, поэтому смотрел в его сторону. Решение задачи оказалось неожиданно простым, о чем я и хочу вам рассказать.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Содержание:
Введение
Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:
То же самое на Debian 10, если предпочитаете его:
Текущая статья писалась для версии 2.4, все скриншоты приведены из нее. В настоящее время уже вышли более новые версии, но вся нижеизложенная инструкция не потеряла актуальности. Все будет работать и в новой версии.
Подготовка к мониторингу в Zabbix
Описанным мной способом можно мониторить температуру не только windows серверов, но и любых рабочих станций, если будет такая необходимость. Схема мониторинга следующая:
Существует бесплатная утилита Open Hardware Monitor, которая может показывать температуру некоторых датчиков сервера. Вообще говоря, она много чего может показывать (напряжение, скорость вентиляторов, загрузку процессора), но в данном случае нас интересует только температура. У этой утилиты есть версия, работающая в командной строке. Из командной строки показания датчиков можно записывать в файл. Этот файл можно анализировать и забирать из него необходимую для мониторинга информацию. Дальше эта информация передается в сервер Zabbix с помощью опции UserParameter. Все достаточно просто и в то же время эффективно.
Приступим к реализации. Скачиваем GUI версию утилиты по ссылке, приведенной ранее и консольную версию OpenHardwareMonitorReport. Запускаем GUI на сервере и смотрим, какие датчики нам доступны для мониторинга.
Программа увидела несколько датчиков. С процессором все понятно, а вот три других датчика не ясно, чью температуру показывают. Я хотел мониторить температуру процессора и материнской платы. Узнать, какая температура относится к материнской плате можно несколькими способами. Конкретно в данной ситуации я просто запустил портированную версию AIDA64 и посмотрел, какие показания у датчика материнской платы:
Оказалось - 45 градусов. Я запомнил, что датчик Temperature #3 отображает температуру материнской платы.
Можно было пойти другим путем, зайти в IPMI панель, если она есть, и посмотреть там. Я работал с серверами SuperMicro, там она есть. Я на всякий случай зашел и проверил:
Почему-то в этой панели не оказалось информации с датчика температуры процессора. Но нам это не важно. Самое главное, что мы узнали параметры, за которыми будем следить - это CPU Packege и Temperature #3. Теперь запускаем консольную версию и смотрим вывод информации. Я для удобства положил OpenHardwareMonitorReport.exe в папку с основной программой и все это хозяйство скопировал в корень диска C:
Открываем файл 1.txt. Ищем там строки
| +- CPU Package : 52 51 52 (/intelcpu/0/temperature/4)
| | +- Temperature #3 : 45 45 45 (/lpc/nct6776f/temperature/3)
Нас интересует выделенный текст. По нему мы будем вычленять температуру для мониторинга и передавать ее на Zabbix сервер. Создаем в этой же папке 2 bat файла следующего содержания:
CPUTemperature.bat
@echo off for /F "usebackq tokens=7-10" %%a in (`C:\OpenHardwareMonitor\OpenHardwareMonitorReport.exe`) do echo %%b %%c %%d| find "/intelcpu/0/temperature/4">nul && set temper=%%a echo %temper%
MotherTemperature.bat
@echo off for /F "usebackq tokens=7-10" %%a in (`C:\OpenHardwareMonitor\OpenHardwareMonitorReport.exe`) do echo %%b %%c %%d| find "/lpc/nct6776f/temperature/3">nul && set temper=%%a echo %temper%
Запускаем эти батники в командной строке и проверяем вывод. Там должны быть только цифры температуры:
Отлично, на выходе готовые цифры, которые мы будем передавать в Zabbix. Займемся его настройкой.
Настройка Zabbix agent в Windows
Предполагается, что у вас уже настроен сервер мониторинга Zabbix и подключены клиенты, которые ему передают информацию. В данном материале я не буду касаться непосредственно установки и настройки сервера Zabbix, это будет отдельный материал. Сейчас же мы берем готовый файл конфигурации агента zabbix_agentd.win.conf и добавляем в самый конец файла следующие строки:
UserParameter=Temperature.CPU, C:\OpenHardwareMonitor\CPUTemperature.bat UserParameter=Temperature.Mother, C:\OpenHardwareMonitor\MotherTemperature.bat
Перезапускаем службу агента Zabbix, чтобы изменения вступили в силу.
Настройка мониторинга на Zabbix сервере
Теперь идем на сервер. У меня Zabbix установлен на сервере CentOS, хотя это не принципиально. Добавляем новый Item. Пойти можно двумя путями:
- Создать template, в него добавить все items, создать триггеры, графики и назначить этот шаблон нужным серверам.
- К каждому серверу отдельно добавлять только необходимые итемы и вручную добавлять триггеры и графики.
Очевидно, что первым путем идти удобнее и разумнее. Я так и поступил, но в процессе реализации столкнулся с проблемой. Не все сервера имеют одинаковый набор датчиков. Где-то я не смог снять температуру с материнской платы, где-то вместо одного процессора, стояло два и хотелось снимать температуру с обоих камней. Как будет в вашем случае - не знаю. Если все серверы однотипные, то создавайте template, если все разные, то вручную добавляйте каждый итем на сервер. Я в итоге сделал и шаблон для одинотипных серверов, и вручную добавлял итемы туда, где имелись отличия от шаблона.
Итак, сначала создадим шаблон. Идем в Configurations - Templates - Create Template. Шаблон я назвал Temperature Windows. Добавил в него Application - Temperature, затем Item CPU Temperatue. Заполняем поля итема как у меня на картинке:
Параметр Temperature.CPU тот же самый, что и в файле конфигурации агента.
По аналогии создаем итем Mother Temperatue:
Сохраняем шаблон. По желанию создаем для него триггеры и графики. Можно и без них. Добавляем шаблон к серверу, который хотим мониторить. Ждем некоторое время и идем проверять входящие данные. Открываем Monitoring - Latest data:
Нажимаем graph и смотрим график:
Теперь добавим в Zabbix еще один сервер для мониторинга, который будет отличаться по конфигурации от предыдущего. На его примере я покажу, как менять настройки клиента и сервера. С этого сервера я не могу снять данные с датчика температуры материнской платы, по какой причине - не знаю, но не AIDA64 ни OpenHardwareMonitor мне температуру не показывают. Ее можно взять по SNTP с этого сервера, но это отдельная тема. В этом сервере 2 процессора и я хочу мониторить температуру обоих.
Запускаем GUI интерфейс и смотрим, какие датчики мы сможем мониторить:
Нас будет интересовать температура обоих ядер процессора. Теперь запускаем OpenHardwareMonitorReport.exe с выводом информации в текстовый файл. Смотрим, как выглядят строки с интересующей нас информацией:
| +- CPU Package : 59 59 59 (/intelcpu/0/temperature/6)
| +- CPU Package : 53 53 54 (/intelcpu/1/temperature/6)
Создаем два bat файла следующего содержания:
CPU1Temperature.bat
@echo off for /F "usebackq tokens=7-10" %%a in (`C:\OpenHardwareMonitor\OpenHardwareMonitorReport.exe`) do echo %%b %%c %%d| find "/intelcpu/0/temperature/6">nul && set temper=%%a echo %temper%
CPU2Temperature.bat
@echo off for /F "usebackq tokens=7-10" %%a in (`C:\OpenHardwareMonitor\OpenHardwareMonitorReport.exe`) do echo %%b %%c %%d| find "/intelcpu/1/temperature/6">nul && set temper=%%a echo %temper%
Редактируем конфигурационный файл zabbix_agentd.win.conf агента Zabbix на клиенте. Добавляем в конец две строки:
UserParameter=Temperature.CPU1, C:\OpenHardwareMonitor\CPU1Temperature.bat UserParameter=Temperature.CPU2, C:\OpenHardwareMonitor\CPU2Temperature.bat
Перезапускаем службу агента, чтобы изменения вступили в силу.
Дальше идем на сервер Zabbix и по аналогии с предыдущим сервером создаем там Итемы мониторинга. Причем итемы создаем не в шаблоне, а в конкретном сервере, который будем мониторить. Параметр key в этих итемах будет соответственно Temperature.CPU1 и Temperature.CPU2 Ждем некоторое время и проверяем результат.
item became not supported
Во время отладки работ я столкнулся с проблемами. Периодически Item отваливались и получали статус: Not Supported. При этом в логах сервера были следующие записи:
27614:20150702:065936.698 item "videoserver:Temperature.CPU" became not supported: Timeout while executing a shell script. 27625:20150702:070938.720 item "videoserver:Temperature.CPU" became supported
То есть данные то собирались, то переставали собираться. Иногда, чтобы данные снова пошли, приходилось удалять итем и создавать его заново. Некоторое время я повозился, пока не понял, в чем дело.
Я обратил внимание, что при запуске батника из командной строки, вывод данных происходит с приличной задержкой в 3-5 секунд. В Zabbix по-умолчанию стоит параметр, по которому агент ожидает ответа от скрипта 3 секунды и на сервере есть подобный параметр, по которому сервер ждет ответа от агента 3 секунды. Если за это время данные не поступают, то итем переходит в статус Not Supported и данные с него не собираются.
Чтобы избавиться от этой ошибки, необходимо увеличить таймаут до 15-ти секунд. Меняем параметр в конфиге на клиентах и на сервере. Он и там и там один и тот же:
Timeout=15
Потом перезапускаем сервер и агентов и ждем результатов. Больше ошибок быть не должно.
На этом, собственно настройка мониторинга температуры окончена. Можно дальше все оформить как полагается: настроить тригеры, оповещения, графики красивые нарисовать. Кому что нужно. Я себе вывел вот такую картинку для наглядности:
Помогла статья? Подписывайся на telegram канал автора
Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.Дополнительные материалы по Zabbix
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Рекомендую полезные материалы по Zabbix: |
Настройки системы |
---|
Видео и подробное описание установки и настройки Zabbix 4.0, а также установка агентов на linux и windows и подключение их к мониторингу.
Подробное описание обновления системы мониторинга zabbix версии 3.4 до новой версии 4.0.
Пошаговая процедура обновления сервера мониторинга zabbix 2.4 до 3.0. Подробное описание каждого шага с пояснениями и рекомендациями.
Подробное описание установки и настройки zabbix proxy для организации распределенной системы мониторинга. Все показано на примерах.
Подробное описание установки системы мониторинга Zabbix на веб сервер на базе nginx + php-fpm.
|
Мониторинг служб и сервисов |
Мониторинг температуры процессора с помощью zabbix на Windows сервере с использованием пользовательских скриптов.
Настройка полноценного мониторинга web сервера nginx и php-fpm в zabbix с помощью скриптов и пользовательских параметров.
Мониторинг репликации mysql с помощью Zabbix. Подробный разбор методики и тестирование работы.
Описание настройки мониторинга tcp служб с помощью zabbix и его инструмента простых проверок (simple checks)
Настройка мониторинга рейда mdadm с помощью zabbix. Подробное пояснение принципа работы и пошаговая инструкция.
Подробное описание мониторинга регистраций транков (trunk) в asterisk с помощью сервера мониторинга zabbix.
Подробная инструкция со скриншотами по настройке мониторинга по snmp дискового хранилища synology с помощью сервера мониторинга zabbix.
|
Мониторинг различных значений |
Настройка мониторинга web сайта в zabbix. Параметры для наблюдения - доступность сайта, время отклика, скорость доступа к сайту.
Один из способов мониторинга бэкапов с помощью zabbix через проверку даты последнего изменения файла из архивной копии с помощью vfs.file.time.
Подробное описание настройки мониторинга размера бэкапов в Zabbix с помощью внешних скриптов.
Пример настройки мониторинга за временем делегирования домена с помощью Zabbix и внешнего скрипта. Все скрипты и готовый шаблон представлены.
Пример распознавания и мониторинга за изменением значений в обычных текстовых файлах с помощью zabbix.
Описание мониторинга лог файлов в zabbix на примере анализа лога программы apcupsd. Отправка оповещений по событиям из лога.
|
Подскажите актуальный способ на сегодняшний день. OHM устарел, энтузиасты больше не делают альфаверсий. LHM более-менее но выдаёт все температуры и не только на свежем железе, но у него нет консольной версии
Даже не знаю, что посоветовать. Давно уже не покупаю самосборы. А у серверных платформ обычно есть свой интерфейс по передаче метрик, либо по ipmi, либо по snmp.
Безконсольный запуск:
- Запускаю OpenHardwareMonitor.exe в планировщике задач при старте системы от пользователя "СИСТЕМА". Лучше-бы сделать службу, но слишком лениво...
- Значения получаю в скрипте powershell:
Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor
Собирается информация по температурам, потреблениям и оборотам вентиляторов CPU (XEON E5 2640V3) и GPU (AMD RX 580 8 ГБ 2048SP)
Система - Windows 10, OpenHardwareMonitor 0.9.6 на "китайской" сборке X99.
Как писал уже Алексей 03.12.2019: у вас старая версия программы. Вроде последняя рабочая версия (с выводом в консоль) 0.8.0.5. Лежит тут: https://github.com/jochenwezel/openhardwaremonitor/releases/tag/0.8.0.5
Там только надо указывать параметр ReportToConsole или ReportToFile.
Ваша версия старая, на моём не сильно новом проце, она не показывает температуру процессора.
Но на совсем новых компах и он не показывает температуру :(
Есть форк поновее (от июня 2021). Тот показывает вроде на новых компах. https://github.com/hexagon-oss/openhardwaremonitor/releases/tag/v0.9.7-alpha01
На выходе есть три значение температуры, нигде не могу найти инфу о том почему нужно использовать последнее, что означает первые два значения?
"Ее можно взять по SNTP с этого сервера," - наверное SNMP имелось виду. SNTP время синхронизирует
Желающие пользоваться данным способом, вот ссылка с GitHub: https://github.com/openhardwaremonitor/openhardwaremonitor/pull/1115
Версия OpenHardwareMonitor 0.8.0.5 (Температуры CPU сканит, Report служба работает и даже настроена для отправки сообщений).
Запросы через Report делать только при включенном от имени администратора OHM, иначе ругается. Прежде чем слать что-то в Zabbix, проверяйте через вывод в текст, что bat выдает.
Добрый день. Подскажите при настройке мониторинга температуры появляется ошибка "Item does not allow parameters".
в config agentа прописал: UserParameter=Temperature.CPU, C:\OpenHardwareMonitorConsole\CPUTemperature.bat
на сервере при проверке батника получаю значение температуры.
У меня были подобные моменты. Попробуйте обнулить историю итема в хосте, предварительно выключив хост. Затем снова его включите.
-
Не уверен, что я прав, но кажется это связано с тем, что на сервер прилетает что-то помимо числового значения и Zabbix ругается на это.
P.S.: Если что, UserParameter в в конфиге агента и Key в итеме хоста должны полностью совпадать. Бывало такое, что по случайному нажатию лишней клавиши, там лишний символ оставался.
Разобрался с отображением графика. на версии Zabbix 4.2.7. получилась сборная солянка OpenHardwareMonitor 0.8.0 Beta, добавил последнюю версию OpenHardwareMonitorReport.exe, температуру процессоров отображает. с температурой материнки еще не совсем ясно. так как на двух серверах материнки вообще не определяются с моделью.
Спасибо автору за статью.
А вот что делать с новыми процессорами, где OpenHardwareMonitor температуру не показывает? Пробовали как то вытащить?
Не знаю что делать. Других консольных программ с выводом температуры с датчиков не встречал.
Печально. Я то же не нашел. А так всё работает славно!!! Хотел на все сервера прикрутить, а то стоят в разных концах предприятия сложно контролировать климат.
Всех приветствую!
Воспользовался данными статьи, очень полезная инфа, но у меня ничего не получается.
Сам батник @echo off
for /F "usebackq tokens=7-10" %%a in (`C:\ohm\OpenHardwareMonitorReport.exe`) do echo %%b %%c %%d| findstr "(/atigpu/2/temperature/0")>nul && set temperature=%%a
echo %temperature%
все отрабатывает на ура и показывает нужную мне температуру
Но с сервера через zabbix_get -s serv -k Temper
вываливается
▒▒▒▒▒ ▒뢮▒▒ ▒▒▒▒▒▒ ▒▒ ▒࠭ (ECHO) ▒⪫▒祭
Соответственно и на веб морде тоже самое.
Получается так, что zabbix считывает любое сообщение которое первое выскакивает и выдает его, и как раз почему то появляется сообщение о режиме вывода команды echo, чего собственно и недолжно быть!
Кто сталкивался с такой особенностью? Может нашли решение проблемы?
Тоже столкнулся с такой же проблемой на видеокарте от амд, батник дает температуру, через Zabbix "????? ?뢮?? ?????? ?? ?࠭ (ECHO) ?⪫?祭."
Кто-нибудь уже решал возможно данную проблему?)
Zabbix 5.4.4
Добрый день! Столкнулся с такой проблемой старая версия OpenHardwareMonitor не считывает температуру с новых процов. Нашел новую версию 0.8.0.3 альфа.. Теперь температура читается, Но нет файла OpenHardwareMonitorReport.exe пытался подсунуть от старой версии все равно через CMD OpenHardwareMonitorReport.exe не смог считать температуру
.
Доброго времени суток. Спасибо за статью. Скажите, всё сделал по инструкции. Но в Latest data не появляется параметр Temperature как у вас. В чем может быть проблема? Может тригер для шаблона надо создать? но какой?
Kaspersky Endpoint Security блокирует работу zabbix + openhardwaremonitor. другие метрики снимаются прекрасно, метрика с UserParameter начинаются сниматься при отключении каспера. облазил политику каспера, назначил исключения по программам, по папке где расположен zabbix и ohm, один фик. подскажите кто сталкивался, куда еще можно влезть?
Добрый день.
Сделал все по инструкции, проверил несколько раз. У меня заббикс на эти элементы данных выдает "Timeout while executing a shell script.". Проверил на хостах, скрипты выполняются и пишут температуру.
Увеличить таймаут пробовали на агентах и сервере? Там отдельный параметр есть по этому поводу.
Увеличил уровень логирования, дабы увидеть, что происходит с отправкой: данные действительно формируются и отправляют каждые 10 минут (с точностью до секунды). Установил интервал обновления на сервере 11 мин, подождал пока отправится несколько раз. И все без изменений, ошибка не исправилась
Так и не понял в чем проблема, но решил попробовать через активную проверку (поменял только настройку на сервере) и все завелось
пока писал вопрос, эта штука сама заработала)))
чудеса да и только
Доброго времени суток!
Появилась необходимость мониторинга рабочих хостов на windows, пришлось прибегнуть к данной инструкции. И вот незадача, до этого настроил, аналогично, мониторинг состояния дисков - всё работает на ура. А вот с температурными показателями процесса не выходит. Самое главное ошибок нет никаких. в логе сервера пишет: item "win10_64:Temperature.CPU" became supported
Но результата ноль.
Помогите, пожалуйста.
Здравствуйте, не доводилось ли Вам мониторить температуру свичей от производителя ubiquiti? Не могу подобрать необходимый шаблон. На ихнем сайты mib какие-то неполноценные.
Для тех кто столкнулся с ошибкой вида :
CPUTemperature[0] [m|ZBX_NOTSUPPORTED] [Unsupported item key.]
--
Найдите в конфиге агента параметр " UnsafeUserParameters", он обычно закомментен, уберите комент и дайте значение 1 :
UnsafeUserParameters=1
Всё потому что символы \ ' " ` * ? [ ] { } ~ $ ! & ; ( ) | # @ не позволены в "UserParameter", а значение "1" снимает это ограничение.
Я перелопатил туеву хучу туториалов, об этои никто не пишет. Пишу я. Надеюсь поможет кому-то.
Спасибо за полезную информацию. Раньше это точно не нужно было, потому что у меня до сих пор работают 2 сервера с этим мониторингом. Я там не трогал этот параметр, он стоит дефолтный.
Здравствуйте помогите при создание файла 1 txt выходит ошибка. Может подскажите. Ошибку прилагаю. Unhandled Exception: System.BadImageFormatException: Could not load file or assembly 'OpenHardwareMonitorLib, Version=0.5.1.7, Culture=neutral, PublicKeyToken=null' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.
File name: 'OpenHardwareMonitorLib, Version=0.5.1.7, Culture=neutral, PublicKeyToken=null'
at OpenHardwareMonitorReport.Program.Main(String[] args)
WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
Спасибо за ответ.
А у вас в принципе консольная утилита OpenHardwareMonitor работает на этой системе? Она очень старая, давно не обновляется. Возможно, она уже просто не поддерживается текущей системой.
Добрый день, настраивал по инструкции и появилась ошибка
Temperature.CPU [m|ZBX_NOTSUPPORTED] [Unsupported item key.]
Раскоментировал UnsafeUserParameters и присвоил значение "1" - не помогло. Может еще идеи какие есть как решить проблему (график не рисуется, но в графике весят значения 37. Запускал стресс тест чтоб проверить изменения но так и остались эти значения).
Обновился OpenHardwareMonitorReport
https://github.com/openhardwaremonitor/openhardwaremonitor/issues/776
https://github.com/openhardwaremonitor/openhardwaremonitor/files/1130239/OpenHardwareMonitorReport.zip
Не выводится температура при обычном запуске через cmd,только если запустить cmd "от администратора" получаю температуру. Изначально учетка уже имеет права админа,но температуру не получает. Куда копать подскажите?
Только знакомлюсь с linux системами (буквально месяц). Установил ubuntu server 16 версию, поставил zabbix server\client снимаю стандартные метрики с серваков, нагрузка CPU/HDD , пытаюсь настроить снятие температуры как расписано выше, но в результате на графике пусто. В комментах выше увидел увидел проблему как и у меня, батники отрабатывают, а сервер их не считывает(игрался с задержками не помогло), люди прописали через shell и у них заработало, переделал тоже на шелл, попробовал оба варианта которые описывались, но та жа история, куда можно посмотреть, что пропустил? И есть момент, как можно проверить правильно ли срабатывает скрипт шелл, если запускаю через шелл (как по аналогии батники через командную) в ответ ругается, что не распознает команду.
А нет случайно файлика шаблона для импорта для удобства?
Я там сильно под себя настраивал, нет смысла в паблик выносить.
На Kaby Lake не работает слежение за сенсорами температуры , можно ли как то исправить ?
Только если найти софт, который будет в консоль выводить температуру.
Вышла новая версия OHWM 0.8.0 beta
но там в составе нету OpenHardwareMonitorReport.exe, вы сами делали эту службу?
Нет, она была.
Ради интереса скачал v 0.7.1 с офф сайта, и там в составе нету. Что я делаю не так?
Честно говоря, сейчас уже не могу вспомнить, где я взял консольную версию. Я похоже ее и сохранил именно к себе, так как она не входила в стандартный набор программы. Где-то в англоязычном инете я ее нашел и использовал. Думаю, в гугле по имени файла или по ключевым словам можно будет найти эту версию.
А сталкивался ли кто с тем, что через несколько часов память компьютера забивается полностью и приходится его перегружать? Столкнулся с этим недавно и путем экспериментов выяснил, что именно мониторинг температуры процессора забивает память (хотя в памяти не видно запущенных процессов zabbix_agent'а). Используется бат-файл, думаю поэкспериментировать с повершеллом.
Я с подобным поведением не сталкивался.
Можно проще:
UserParameter=, FOR /F "tokens=7-10" %A in ('ПУТЬ_ДО_OpenHardwareMonitorReport.exe ^| FIND "intelcpu/0/temperature/4"') DO @ECHO %A
Добрый день!
Спасибо за статью. Однако столкнулся с проблемой. Есть батник на виндовой машине.
@echo off
for /F "usebackq tokens=7-10" %%a in (`C:\OHMReport\OpenHardwareMonitorReport.exe`) do echo %%b %%c %%d| find "/atigpu/0/temperature/0">nul && set temper=%%a
echo %temper%
Вызываю на ней через
c:\zabbix>zabbix_agentd.exe -t Temperature.GPU
получаю [t|67]
вроде всё ок.
Но с сервера через zabbix_get -s serv -k Temperature.GPU
вываливается
▒▒▒▒▒ ▒뢮▒▒ ▒▒▒▒▒▒ ▒▒ ▒࠭ (ECHO) ▒⪫▒祭
Соответственно и на веб морде тоже самое в LatestData.
Кто сталкивался с такой особенностью?
Спасибо.
У меня точно такая же проблема. Есть какое нибудь решение?
День добрый) появилось решение проблемы с выводом результата выполнения батника в zabbix??? такая же проблема у меня нарисовалась
Добрый день!
У меня следующая проблема: При считывании параметров программой есть значение "| +- Temperature Difference from 100 : 64 64 64 (/hdd/0/temperature/0)"
При добавлении параметра "@echo off
for /F "usebackq tokens=7-10" %%a in (`C:\OpenHardwareMonitor\OpenHardwareMonitorReport.exe`) do echo %%b %%c %%d| find "/hdd/0/temperature/0">nul && set temper=%%a
echo %temper%" в bat файл, в ответ получаю "Режим вывода команд на экран (ECHO) отключен.". В чем может быть проблема?
проблема в том что tokens=7-10 означает что из строки | +- Temperature Difference from 100 : 64 64 64 (/hdd/0/temperature/0)
7-10 часть будет ": 64 64 64", а еще наверняка сначала строки есть еще одна палка |
поэтому поиск по строке не проводится и в echo нечего вывести
Я не знаю чем обусловлено, но для работы батников как минимум нужно увеличивать таймаут и агента и сервера. Скрипты power shel работают на дефолтных таймаутах. Да и визуально zabbix_get -s 10.0.2.14 -k system.sensor[atigpu,0,temperature,0] - который стучится на powershell скрипт - отдает результат в консоль за 1 секунду.
zabbix_get -s 10.0.2.14 -k GPU1_temp - стучится на батник, отдает через 4 секунды...
Тоже пошел путем powershell - не так тормозит систему и более универсальное решение...
Скрипт powershell
param($hw, $hwid, $sensor, $sensorid)
(Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor | ?{$_.identifier -eq "/$hw/$hwid/$sensor/$sensorid"}).value
Кстати, нужно разрешить выполнение скриптов
Открываем powershell и делаем команду Set-ExecutionPolicy RemoteSigned
Потом подтверждаем - Y
В zabbix_agentd.conf
UserParameter=system.sensor[*],powershell.exe C:\путь\до\вашего\скрипта powershell.ps1 $1 $2 $3 $4
В zabbix
В item:
Имя - 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]
Все данные пошли. Осталось вот тригеры дописать и счастье :)
Могу скинуть целиком шаблон...
Чисто для справки, почему powershell не так тормозит? Это чем-то обусловлено или только предположения? Я несколько раз использовал описанный в этой статье пример, у меня нормально работает. В одном офисе до сих пор с момента написания статьи трудятся эти скрипты и мониторят температуру. Вчера буквально проверял.
в данном случае данные тянуться из WMI windows уже выполняющегося в трее openhardwareGUI версии. powershell тут было удобнее тащить из Массива. Сам же zabbix тоже умеет wmi, но вроде не массивы. Одинарное выражение. к примеру zabbix_get -s namepc -p 10050 -k "wmi.get[root\cimv2,SELECT UserName from Win32_ComputerSystem]" - выдаст имя пользователя активного за пк. Но вот с массивами не пробовал.
На старом железе i7 2700k использовал Ваше решение. Потом, когда установил каспер, Ваш метод начал часто отваливаться по таймауту. Перешел на ps, всё гуд.
можно шаблон? либо просто посмотрю либо под себя переделаю.
Отличный гайд! Спасибо!
Датчики CPU/HDD работают, однако при попытке снять температуру GPU график не появляется.
Батник отрабатывает и показывает реальную температуру, график в Zabbix пишет GPU Temperature [no data], в логах сервера
2820:20170123:112614.418 item "Miner-04:GPU.1.Temperature" became not supported: Received value [ECHO is off] is not suitable for value
type [Numeric (unsigned)] and data type [Decimal]
при смене на Float, соответственно в логах
2823:20170123:113044.631 error reason for "Miner-04:GPU.1.Temperature" changed: Received value [ECHO is off.] is not suitable for value
type [Numeric (float)]
Может есть идеи, куда копать? Спасибо!
Где-то ошибка. В zabbix на итем приходит не цифровое значение, а что-то другое. Я постоянно сталкиваюсь с такими ошибками. Надо отлаживать. Проверить можно через zabbix_agentd -t "имя итема" что он вообще отправляет на сервер.
Вообще очень странно. Я включил дебаг, в заббикс приходит значение "ECHO is off".
По вашему совету сделал команду, вот странный вывод:
c:\zabbix>zabbix_agentd.exe -c zabbix_agentd.win.conf -t CPU.Temperature.Core.1
CPU.Temperature.Core.1 [t|ECHO is off.]
c:\zabbix>zabbix_agentd.exe -c zabbix_agentd.win.conf -t GPU.1.Temperature
GPU.1.Temperature [t|52]
c:\zabbix>zabbix_agentd.exe -c zabbix_agentd.win.conf -t CPU.Temperature.Core.1
CPU.Temperature.Core.1 [t|62]
То есть в первом случае, когда я парсил температуру CPU, мне выдало Echo is off, а через несколько секунд выдало реальную температуру.
Однако, с температурой CPU проблем нет (в плане графиков, заббикс её понимает). А информацию о температуре GPU как раз (как я выше и описал) заббикс получить и не может. Однако судя по консольной команде выше, агент переваривает итем GPU.1.Temperature и возвращает нормальное числовое значение.
Батники идентичны, при запуске батника выводится реальная информация.
Получается, что отправляет на сервер корректное число, а сервер его не принимает и по всем айтемам пишет [no data].
ЧСХ это касается ТОЛЬКО датчиков GPU. ВСЕХ GPU. Все (!) датчики CPU, RAM, HDD работают корректно.
Весь инет перегуглил, не могу найти решения. :(
Ну если что, решил через powershell скрипт вместо батника:
param($hw="nvidiagpu", $hwid=0, $sensor="temperature", $sensorid=0)
(Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor | where {$_.identifier -eq "/$hw/$hwid/$sensor/$sensorid"}).value
В zabbix_agentd.conf
UserParameter=system.sensor[*],powershell.exe C:\scripts\cpuid.ps1 $1 $2 $3 $4
В zabbix
В item:
key = system.sensor[intelcpu,0,temperature,0]
----
Только надо чтоб GUI-версия была запущена, можно в авторан пихнуть и спрятать в трей.
Оставлю это здесь, вдруг кому пригодится:) Такого готового решения в инете я не нашел.
Если не трудно распишите поподробнее
Пытаюсь через PowerShell запустить этот батник cpuid.ps1, но выдается ошибка:
PS D:\OpenHardwareMonitor> .\cpuid.ps1
At D:\OpenHardwareMonitor\cpuid.ps1:1 char:11
+ param($hw=»nvidiagpu», $hwid=0, $sensor=»temperature», $sensorid=0)
+ ~
Missing expression after '='.
At D:\OpenHardwareMonitor\cpuid.ps1:1 char:10
+ param($hw=»nvidiagpu», $hwid=0, $sensor=»temperature», $sensorid=0)
+ ~
Missing ')' in function parameter list.
At D:\OpenHardwareMonitor\cpuid.ps1:1 char:22
+ param($hw=»nvidiagpu», $hwid=0, $sensor=»temperature», $sensorid=0)
+ ~
Missing argument in parameter list.
At D:\OpenHardwareMonitor\cpuid.ps1:1 char:67
+ param($hw=»nvidiagpu», $hwid=0, $sensor=»temperature», $sensorid=0)
+ ~
Unexpected token ')' in expression or statement.
At D:\OpenHardwareMonitor\cpuid.ps1:3 char:92
+ ... \OpenHardwareMonitor -Class sensor | where {$_.identifier -eq «/$hw/$ ...
+ ~
You must provide a value expression following the '-eq' operator.
At D:\OpenHardwareMonitor\cpuid.ps1:3 char:93
+ ... sor | where {$_.identifier -eq «/$hw/$hwid/$sensor/$sensorid»}).value
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unexpected token '«/$hw/$hwid/$sensor/$sensorid»' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : MissingExpressionAfterToken
Что делаю не так. подскжите?