Zabbix мониторинг температуры процессора в ОС Windows и Linux

Что такое мониторинг температуры?

Мониторинг температуры — важный аспект управления инфраструктурой серверов и рабочих станций. Высокая температура компонентов оборудования может привести к снижению производительности, сбоям и даже выходу из строя устройств. Для предотвращения таких ситуаций используется программное обеспечение мониторинга, позволяющее отслеживать температуру процессора, видеокарты, жестких дисков и других компонентов системы.

Почему Zabbix + OpenHardwareMonitorReport?

Zabbix — это мощная система мониторинга ИТ-инфраструктуры, поддерживающая широкий спектр метрик и интеграций. Однако штатные средства Zabbix позволяют получать лишь ограниченную информацию о температуре. Здесь на помощь приходит сторонний инструмент OpenHardwareMonitorReport, который собирает детальную информацию о состоянии аппаратного обеспечения ПК и сервера.

Для интеграции OpenHardwareMonitor с Zabbix мы будем использовать утилиту OpenHardwareMonitorReport.exe, предоставляющую возможность извлечения данных в удобочитаемом виде, пригодном для импорта в Zabbix.

Настройка на Windows

Схема простая: агент Zabbix на Windows периодически вызывает OpenHardwareMonitorReport.exe, тот опрашивает датчики через библиотеку OpenHardwareMonitorLib и отдаёт значение, а Zabbix забирает его как обычный UserParameter.

1. Кладём утилиту рядом с агентом. Распаковываем OpenHardwareMonitorReport.exe, например, в C:zabbixbin. Запускать нужно от имени администратора (или сервис Zabbix агента должен работать под учёткой с доступом к железу), иначе часть датчиков будет недоступна.

2. Проверяем, что утилита вообще видит датчики. Открываем консоль и запускаем без параметров — на экран должен вывестись список всех найденных сенсоров с текущими значениями (Temperature, Load, Fan, Voltage и т.д). Из этого списка нам нужен идентификатор датчика температуры CPU Package.

OpenHardwareMonitorReport.exe /sensor:Temperature /source:CPU

3. Добавляем UserParameter в конфиг агента. Открываем C:zabbixzabbix_agentd.win.conf и добавляем строку:

UserParameter=cpu.temp,C:zabbixbinOpenHardwareMonitorReport.exe /sensor:Temperature /source:CPU /value

Ключи /sensor, /source и /value зависят от версии утилиты — если у вас другая сборка, сверьтесь со справкой (OpenHardwareMonitorReport.exe /?), суть не поменяется: нужно получить на выходе одно число в °C.

4. Перезапускаем службу Zabbix agent, чтобы конфиг подхватился:

net stop "Zabbix Agent"
net start "Zabbix Agent"

5. Проверяем со стороны сервера Zabbix, что ключ отдаёт значение:

zabbix_get -s 192.168.1.10 -k cpu.temp

Настройка на Linux

OpenHardwareMonitor — чисто Windows-инструмент, на Linux пойдём другим путём: температуру процессора ядро уже отдаёт через /sys/class/hwmon (драйверы coretemp для Intel и k10temp/zenpower для AMD), поэтому сторонние утилиты не нужны — читаем значение напрямую.

1. Находим нужный hwmon. Значения температуры лежат в файлах tempN_input в тысячных долях градуса:

for f in /sys/class/hwmon/hwmon*/name; do echo "$f: $(cat $f)"; done
# ищем строку с coretemp (Intel) или k10temp (AMD)

2. Добавляем UserParameter в конфиг агента (/etc/zabbix/zabbix_agentd.conf или файл в zabbix_agentd.d/), подставив свой путь к hwmon:

UserParameter=cpu.temp,awk '{printf "%.1f", $1/1000}' /sys/class/hwmon/hwmon2/temp1_input

3. Перезапускаем агент и проверяем:

systemctl restart zabbix-agent
zabbix_get -s 192.168.1.20 -k cpu.temp

Создаём айтем и триггер в Zabbix

Дальше — стандартно, в веб-интерфейсе Zabbix, для узла сети (host):

Data collection → Hosts → ваш хост → Items → Create item:

  • Name: CPU Temperature
  • Type: Zabbix agent
  • Key: cpu.temp
  • Type of information: Numeric (float)
  • Units: °C
  • Update interval: 1m

Дальше добавляем триггер, чтобы получать уведомление при перегреве, например:

Warning:  last(/Хост/cpu.temp)>80
High:     last(/Хост/cpu.temp)>90

Пороги подбирайте под своё железо — для серверных Xeon 80-85°C уже повод насторожиться, а для игровых десктопных CPU краткий скачок до 85-90°C под нагрузкой — норма. Добавьте пару таких айтемов на разные хосты, соберите их в один график в Dashboard — и температура всего парка машин будет как на ладони, без необходимости идти к каждой машине руками.