Появилась у меня потребность мониторить температуру windows серверов в Zabbix. Из систем мониторинга он мне больше всего нравится, поэтому смотрел в его сторону. Решение задачи оказалось неожиданно простым, о чем я и хочу вам рассказать.
Введение
Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему 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
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Проверьте себя на вступительном тесте и смотрите подробнее программу по ссылке.
Рекомендую полезные материалы по 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. Отправка оповещений по событиям из лога.
|
Как писал уже Алексей 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]" - выдаст имя пользователя активного за пк. Но вот с массивами не пробовал.
можно шаблон? либо просто посмотрю либо под себя переделаю.
Отличный гайд! Спасибо!
Датчики 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
Что делаю не так. подскжите?