Всегда хотел знать об обслуживаемой системе чуточку больше – это как хобби которое нравится, стараешься узнать максимум всей информации. А в моем случае хобби совпадает с работой и я собственно рад этому. Цель данной заметки практически воспроизвести все действия которые нужно сделать чтобы снимать показатель температуры процессора, но если Вам не известно, то штатных средств для этой простой задачи в системе Windows 7 к сожалению нет. Что же мне даст в конечном итоге данный съем показателей температуры, а вот что, если температуры держится всегда на достаточно высоком уровне, то возможно не лишним будет произвести чистку системного блога, от пыли, заменить термопасту, сделать тщательный осмотр системного блога. И вот я перехожу к самому главному, раз нет встроенных средств, то буду использовать сторонние, а именно консольную утилиту для решения данной задачи – OpenHardwareMonitor, состоит она из двух файлов, exe-исполняемого файла и dll-библиотеки.
- OpenHardwareMonitorReport.exe
- OpenHardwareMonitorLib.dll
Настраиваю сервер по мониторингу Zabbix если не настроен по своей заметке:
Первым делом ставлю агент Zabbix по своей заметке:
Где брать данные мы поняли, теперь нужно наладить поставки значений показателей Zabbix серверу.
Для этих целей создам новый Template и в нем создам новый элемент данных (Item), захожу на Zabbix сервер:
http://IP&DNS – Configuration – Templates – Create template
Template Name: Template Hardware
Groups: OFFICE (это мои системы в обслуживаемой сети)
Save
Перехожу в созданный Template и в нем создаю приложение и элемент данных:
Configuration – Templates – Template Hardware – Applications – Create Applications
Name: CPU
Configuration – Templates – Template Hardware – Items – Create Item
Привожу к виду:
Name: CPU Template
Type: Zabbix agent
Key: Temperature.CPU[0]
Type of information: Numeric (unsigned)
Data type: Decimal
History storage period (in days): 90
Trend storage period (in days): 365
Application: CPU
Enabled: Yes
Save
Теперь нужно связать данный Template с хостом рабочей станции под управлением Windows 7:
Http://IP&DNS – Configuration – Hosts – выбираю хост (Name = aollo) – вкладка Templates – select (Group: Office, Template Hardware), нажимаю Select – после Add – после Save (для сохранения изменений)
Настройки серверного описания завершены, теперь перейдем собственно к клиенту, потребуется в конфигурационный файл Zabbix агента (zabbix_agentd.win.conf) на клиентской станции под управлением Windows 7 добавить пользовательский параметр: – UserParameters следующего вида:
Синтаксис: UserParameter=ключ[*],команда
Как этот синтаксис работает:
Команда, через которую мы получим значение, обрабатывается на стороне клиента. Zabbix сервер будет получать ключ с присвоенным ему значением. В статье имеется в виду, что агент у вас уже установлен в виде службы и дружит с сервером.
Открываем текстовым редактором Notepad++ конфигурационный файл (zabbix_agentd.win.conf) и добавляем следующую строчку:
UserParameter=Temperature.CPU[*],c:\script\temperature.bat
Теперь пояснения:
temperature.bat – это скрипт который задействует консольную утилиту OpenHardwareMonitorReport и некоторые дополнения по обработке получаемых результатов в системе Windows 7 текущей станции.
Для всех дополнений, снимаемых с рабочей станции я в системе создал каталог: c:\script и в него поместил следующие файлы:
- OpenHardwareMonitorReport.exe
- OpenHardwareMonitorLib.dll
- temperature.bat
Теперь продемонстрирую содержимое bat–файла для извлечения значения температуры из системы:
@echo off
for /F "usebackq tokens=7-10" %%a in (`C:\script\OpenHardwareMonitorReport.exe`) do echo %%b %%c %%d| find "/intelcpu/0/temperature/0">nul && set temper0=%%a
echo %temper0%
Скрипт возвращает значение в виде десятичного числа.
Можно также проверить, что параметр по ключу успешно извлекается:
c:\Program Files (x86)\zabbix>zabbix_agentd.exe --config zabbix_agentd.win.conf
--print | findstr Temperature
Temperature.CPU [t|52]
Видите, значения извлекаются, все работает.
После этого изменения конфиг файла и размещения всех файлов и скриптов, перезагружаем службу zabbix agent.
c:\Program Files (x86)\zabbix>net stop “Zabbix Agent” && net start “Zabbix Agent”
Служба “Zabbix Agent” останавливается.
Служба “Zabbix Agent” успешно остановлена.
Служба “Zabbix Agent” успешно запущена.
Теперь нужно связать хост
Начинаем получать значения на сервер:
http://IP&DNS – Monitoring – Latest data – Group (OFFICE):Host(aollo) – опускаемся в самый низ и видим новую категорию: -other – развернув которую можно наблюдать извлекаемые значения:
CPU Temperature Jan 22nd, 2015 06:14:56 AM 52 +2 Graph
Нажимаю Graph и получаю уже сейчас собранную статистику:
Работает, но это для одного CPU[0], а если из два CPU[1], то нужно:
Изменяем на клиенте конфигурационный файл:
LogFile=c:\zabbix_agentd.log
LogFileSize=10
Server=192.168.0.197
ListenPort=10050
Hostname=aollo
UserParameter=windows.services,"%ProgramFiles%\zabbix\services.exe"
UserParameter=Temperature.CPU0[*],c:\script\temperature0.bat
UserParameter=Temperature.CPU1[*],c:\script\temperature1.bat
c:\Program Files (x86)\zabbix>zabbix_agentd.exe –config zabbix_agentd.win.conf
–print | findstr Temperature
Temperature.CPU0 [t|51]
Temperature.CPU1 [t|60]
И также изменяем/дополняем элемент данных на сервере:
Теперь последние снимаемые данные с рабочей станции график уже пишутся и строятся отдельно.
Работает съем данных, проверил, что данные идут с клиентских рабочих станций различных материнок и в довесок с моего ноутбука Lenovo G700, а вот с серверной материнки (ProLiant DL180G6) данные с помощью данной утилиты вообще не снимаются, так что в отсутствие стандартизированных компонентов в малой компании подбор различных параметров которые нужно мониторить работа системного администратора превращается в отличное подобие квеста. Но я не отказываюсь от такого, а собираю статистику. Посмотрим, что еще можно с помощью данной консольной утилиты извлечь из системы чтобы мониторить:
c:\script>OpenHardwareMonitorReport.exe | findstr temperature
| +- CPU Core #1 : 53 52 53 (/intelcpu/0/temperature/0)
| +- CPU Core #2 : 59 59 59 (/intelcpu/0/temperature/1)
| +- GPU Core : 38 38 38 (/nvidiagpu/0/temperature/0)
Вот еще можно GPU мониторить, т.е. температуру графического процессора.
Возможно, если найти более функциональную утилиту консольного вида то съем различных параметров можно расширить, но не стоит стараться охватить все, следует остановиться, только на самом нужном и значимом в практическом применении, не тратьте время попусту. А вот и график за период в шесть дней, как меняется температура на моем рабочем ноутбуке с течением выполняемых задач (наверное, как-то так), и конечно же удовольствие от проделанной и визуализированной работы.
А так заметка полностью работоспособна, теперь буду прощаться. До встречи, с уважением – автор блога ekzorchik.
Александр, про hp. Я заббикс давно не смотрел, но,вроде, были готовые темплейты для серверов с установленными агентами hp. По snmp снимается все
Для тех кто столкнулся с ошибкой вида :
CPUTemperature[0] [m|ZBX_NOTSUPPORTED] [Unsupported item key.]
—
Найдите в конфиге агента параметр ” UnsafeUserParameters”, он обычно закомментен, уберите комент и дайте значение 1 :
UnsafeUserParameters=1
Всё потому что символы \ ‘ ” ` * ? [ ] { } ~ $ ! & ; ( ) | # @ не позволены в “UserParameter”, а значение “1” снимает это ограничение.
Я перелопатил туеву хучу туториалов, об этои никто не пишет. Пишу я. Надеюсь поможет кому-то.