Как мониторить температуру процессора на Windows системе

Posted by

Всегда хотел знать об обслуживаемой системе чуточку больше – это как хобби которое нравится, стараешься узнать максимум всей информации. А в моем случае хобби совпадает с работой и я собственно рад этому. Цель данной заметки практически воспроизвести все действия которые нужно сделать чтобы снимать показатель температуры процессора, но если Вам не известно, то штатных средств для этой простой задачи в системе к сожалению нет. Что же мне даст в конечном итоге данный съем показателей температуры, а вот что, если температуры держится всегда на достаточно высоком уровне, то возможно не лишним будет произвести чистку системного блога, от пыли, заменить термопасту, сделать тщательный осмотр системного блога. И вот я перехожу к самому главному, раз нет встроенных средств, то буду использовать сторонние, а именно консольную утилиту для решения данной задачи – 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) – вкладка Templatesselect (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]

И также изменяем/дополняем элемент данных на сервере:

Изменяем элемент данных на контроль 2 значений по CPU

Теперь последние снимаемые данные с рабочей станции график уже пишутся и строятся отдельно.

Отлично последние данные по CPU для двух процессоров начали собираться

Работает съем  данных, проверил, что данные идут с клиентских рабочих станций различных материнок и в довесок с моего ноутбука 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.

One comment

  1. Александр, про hp. Я заббикс давно не смотрел, но,вроде, были готовые темплейты для серверов с установленными агентами hp. По snmp снимается все

Leave a Reply

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

3 × четыре =