- PVSM.RU - https://www.pvsm.ru -

Zabbix 2.2: Мониторинг температуры процессора Windows машины

Zabbix 2.2: Мониторинг температуры процессора Windows машины

Немного о себе и об рабочей среде

Работаю инженером в компании из двух человек, обслуживаем десяток муниципальных и коммерческих предприятий с парком компьютеров до 100 штук из них 99% windows машин. Занимаемся всем от прокладки сети до настройки информационных систем. Работы много и иногда очень хочется сделать свою жизнь чуточку проще и вот, в очередной такой момент, я столкнулся с системой мониторинга zabbix.

При первом знакомстве с zabbix, меня переполняли эмоции и фантазии о мониторинге всего на свете. Первой была идея предотвращения физических неисправностей путем отслеживания основных показателей железа, например температуру или напряжение, поскольку мне видится весьма логичным и экономически выгодным, поменять термопасту или начать подбирать замену уставшей технике до того как пользователь сообщит о её преждевременной кончине или страшных тормозах.
Система мониторинга Zabbix действительно очень мощная и гибкая, но, к сожалению, далеко не все аспекты для отслеживания доступны из стандартных коробочных шаблонов. Таким образом, моя фантазия с треском разбилась об стену отсутствия штатных инструментов мониторинга температур в Windows.

Процесс поиска в интернете поставил меня перед фактом, что вытащить температуры железа без сторонних средств нельзя. При поиске этих самых средств, я столкнулся [1]с популярной утилитой SpeedFan [2], которая умеет собирать данные о температуре устройств, скорости вентиляторов, напряжений. Но получить от неё готовые к обработке данные без установки еще одной утилиты нет возможности. Плюс ко всему они не open source и требует активации компонента SNMP протокола. Вывод: попробовать на windows сервере без IMPI можно, но как вариант массового распространения в сети – не годен. Дальнейший поиск навел на программы hwmonitor [3]и aida64 [4] — монстры, крупногабаритные и платные.

OpenHardwareMonitor

Уже почти отчаявшись, зацепился за короткое сообщение [5] на англоязычном форуме zabbix. Рекомендовали небольшую open source [6] утилиту OpenHardwareMonitor [7] — она имеет графический интерфейс и умеет считывать температуру устройств с датчиков. И самое главное её автор, по просьбе трудящихся написал консольную версию [8](последняя версия 28.10.2012), выводящую информацию в готовой для обработки форме.

Версия с GUI:

Версия с GUI

Консольная версия:

Консольная версия

Консольная версия состоит из двух файлов, exe исполняемого файла и dll библиотеки.

  • OpenHardwareMonitorReport.exe
  • OpenHardwareMonitorLib.dll

Где брать данные мы поняли, теперь нужно наладить поставки значений показателей Zabbix серверу.

Настройка сервера

Для начала на сервер для узла сети добавим новый элемент данных:

Новый элемент данных

Назовем его: CPU Temperature. (Температура процессора)

Тип: Zabbix агент
Ключ: Temperature.CPU[0]. (Название не принципиально, главное чтобы с конфигом агента совпадал).
Интерфейс узла сети: ipdns. (Узел, который будем мониторить).
Тип информации: Числовой (целое положительное)
Тип данных: Десятичный

Интервал обновлений (в сек): 3600. (На скриншоте стоит 10 сек, для временной проверки).

На сервере закончили, переходим к конфигурации клиента.

Настройка клиента

Нестандартные данные мы будем отправлять через Zabbix agent в конфиге(zabbix_agentd.conf) которого предусмотрены так называемые пользовательские параметры – UserParameters вида:

UserParameter=ключ[*],команда

Команда, через которую мы получим значение, обрабатывается на стороне клиента. Zabbix сервер будет получать ключ с присвоенным ему значением. В статье имеется в виду, что агент у вас уже установлен в виде службы и дружит с сервером.

В конец конфиг файла агента добавляем:

UserParameter=Temperature.CPU[*], C:OpenHardwareMonitorCPUTemperature.bat

CPUTemperature.bat — написанный мной batch файл который вытаскивает из OpenHardwareMonitor, среднюю температуру по процессору. В программе эта строка называется CPU Package.

В C:OpenHardwareMonitor лежат 3 файла:

  • OpenHardwareMonitorReport.exe
  • OpenHardwareMonitorLib.dll
  • CPUTemperature.bat
Содержимое CPUTemperature.bat

Инвалид на костылях.

@echo off
del /s C:OpenHardwareMonitor*.txt >nul 2>null
call start /B /wait C:OpenHardwareMonitorOpenHardwareMonitorReport.exe >> C:OpenHardwareMonitorOpenHardwareMonitorReport.txt
find "CPU Package    :" C:OpenHardwareMonitorOpenHardwareMonitorReport.txt | find "temperature" >>C:OpenHardwareMonitorResult.txt
for /f "tokens=7 delims= " %%i in (C:OpenHardwareMonitorResult.txt) do echo %%i >> C:OpenHardwareMonitortemp.txt
TYPE C:OpenHardwareMonitortemp.txt

Взываю к habra-сообществу о помощи в преобразовании этого ужаса в нормальный программный код без костылей из текстовых файлов.
Тем не менее, со своей задачей скрипт справляется.

Скрипт возвращает значение в виде десятичного числа.

После этого изменения конфиг файла и размещения всех файлов и скриптов, перезагружаем службу zabbix agent.

Начинаем получать значения на сервер:

График
Заключение

Решена задача по извлечения температуры CPU. По той же схеме можно получить температуру GPU. Но по-прежнему остро стоят вопросы определения скорости работы вентиляторов, напряжения на бп, а так же вопрос есть ли способ проверки состояния северного и южного мостов.

Автор: FATALnv

Источник [9]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/63710

Ссылки в тексте:

[1] столкнулся : https://www.zabbix.com/forum/showthread.php?t=19014

[2] SpeedFan: http://www.almico.com/speedfan.php

[3] hwmonitor : http://www.cpuid.com/softwares/hwmonitor-pro.html

[4] aida64 : http://www.aida64.com/

[5] короткое сообщение: https://www.zabbix.com/forum/showpost.php?p=143811&postcount=12

[6] open source: http://openhardwaremonitor.org/license/

[7] OpenHardwareMonitor : http://openhardwaremonitor.org/

[8] просьбе трудящихся написал консольную версию: https://code.google.com/p/open-hardware-monitor/issues/detail?id=230

[9] Источник: http://habrahabr.ru/post/228095/