Planetahost VPS
Перейти к основному контенту

Мониторинг оборудования в Linux с помощью lm-sensors

intro-Monitoring-Temperature-Linux-LM-Sensors-planetahost.png

Подробности урока
Уровень сложности Лёгкий
Права root Требуются
Требования Терминал Linux
Категория Установка ПО
Совместимость с ОС Debian, RHEL
Примерное время чтения 15 мин

Введение

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

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

В этой статье рассмотрим установку, настройку и использование lm-sensors.

Что умеет lm-sensors

После настройки утилита позволяет получать информацию о:

  • температуре процессора;

  • температуре материнской платы;

  • температуре чипсета;

  • температуре NVMe SSD;

  • температуре некоторых HDD;

  • скорости вращения вентиляторов;

  • напряжениях питания;

  • энергопотреблении (на поддерживаемом оборудовании).

Полученные данные можно использовать как для ручной диагностики, так и для систем мониторинга, например Zabbix, Prometheus или Home Assistant.

Инструкция

Устанновка

Debian / Ubuntu
apt update
apt install lm-sensors

изображение.png

RHEL / AlmaLinux / Rocky Linux
sudo dnf install lm_sensors
CentOS 7
sudo yum install lm_sensors
Arch Linux
sudo pacman -S lm_sensors

Поиск доступных датчиков

После установки необходимо определить поддерживаемые аппаратные датчики.

Запустите:

sudo sensors-detect

Утилита выполнит поиск доступных контроллеров и предложит несколько вопросов.

В большинстве случаев можно отвечать:

YES

изображение.png

или просто нажимать:

Enter

для выбора значения по умолчанию.

После завершения проверки будет показан список необходимых модулей ядра.

изображение.png

В данном примере были обнаружены:

  • coretemp - драйвер для встроенных температурных датчиков процессоров Intel;
  • nct6775 - драйвер для микросхемы Super I/O Nuvoton, отвечающей за мониторинг температуры, напряжений и скорости вращения вентиляторов на материнской плате.

Затем sensors-detect предложит автоматически добавить необходимые модули в файл /etc/modules, чтобы они загружались при каждой загрузке системы:

Do you want to add these lines automatically to /etc/modules? (yes/NO)

Рекомендуется ответить:

yes

После этого необходимые модули будут автоматически загружаться при каждом запуске операционной системы. Если вы выбрали NO, модули можно загрузить вручную командой modprobe или самостоятельно добавить их в /etc/modules.

Загрузка найденных модулей

Обычно современные дистрибутивы автоматически загружают необходимые модули.

При необходимости их можно загрузить вручную:

sudo modprobe coretemp

или

sudo modprobe k10temp

Проверить загрузку можно командой:

lsmod | grep temp

Просмотр показаний

Для отображения информации используется команда:

sensors

Пример вывода:

root@HA:~# sensors
nct6779-isa-0a20
Adapter: ISA adapter
Vcore:                   1.80 V  (min =  +0.00 V, max =  +1.74 V)  ALARM
in1:                     0.00 V  (min =  +0.00 V, max =  +0.00 V)
AVCC:                    3.34 V  (min =  +2.98 V, max =  +3.63 V)
+3.3V:                   3.34 V  (min =  +2.98 V, max =  +3.63 V)
in4:                     0.00 V  (min =  +0.00 V, max =  +0.00 V)
in5:                     0.00 V  (min =  +0.00 V, max =  +0.00 V)
in6:                     1.10 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
3VSB:                    3.30 V  (min =  +2.98 V, max =  +3.63 V)
Vbat:                    3.26 V  (min =  +2.70 V, max =  +3.63 V)
in9:                     1.05 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in10:                  160.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in11:                  136.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in12:                    1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in13:                  600.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in14:                  144.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
fan1:                     0 RPM  (min =    0 RPM)
fan2:                  1125 RPM  (min =    0 RPM)
fan3:                     0 RPM  (min =    0 RPM)
fan4:                     0 RPM  (min =    0 RPM)
fan5:                     0 RPM  (min =    0 RPM)
SYSTIN:                 +17.0°C    sensor = thermistor
CPUTIN:                 +20.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = CPU diode
AUXTIN0:                +21.0°C  (high =  +0.0°C, hyst =  +0.0°C)  ALARM  sensor = thermistor
AUXTIN1:               +106.0°C    sensor = thermistor
AUXTIN2:               +106.0°C    sensor = thermistor
AUXTIN3:               +106.0°C    sensor = thermistor
PECI Agent 0:           +12.0°C  
PCH_CHIP_CPU_MAX_TEMP:   +0.0°C  
PCH_CHIP_TEMP:           +0.0°C  
PCH_CPU_TEMP:            +0.0°C  
intrusion0:            OK
intrusion1:            ALARM
beep_enable:           disabled

nvme-pci-0100
Adapter: PCI adapter
Composite:    +36.9°C  (low  =  -0.1°C, high = +76.8°C)
                       (crit = +79.8°C)

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +38.0°C  (high = +90.0°C, crit = +100.0°C)
Core 0:        +34.0°C  (high = +90.0°C, crit = +100.0°C)
Core 1:        +34.0°C  (high = +90.0°C, crit = +100.0°C)
Core 2:        +34.0°C  (high = +90.0°C, crit = +100.0°C)
Core 3:        +34.0°C  (high = +90.0°C, crit = +100.0°C)
Core 4:        +34.0°C  (high = +90.0°C, crit = +100.0°C)
Core 5:        +34.0°C  (high = +90.0°C, crit = +100.0°C)
Core 6:        +33.0°C  (high = +90.0°C, crit = +100.0°C)
Core 8:        +33.0°C  (high = +90.0°C, crit = +100.0°C)
Core 9:        +34.0°C  (high = +90.0°C, crit = +100.0°C)
Core 10:       +34.0°C  (high = +90.0°C, crit = +100.0°C)
Core 11:       +33.0°C  (high = +90.0°C, crit = +100.0°C)
Core 12:       +34.0°C  (high = +90.0°C, crit = +100.0°C)
Core 13:       +33.0°C  (high = +90.0°C, crit = +100.0°C)
Core 14:       +34.0°C  (high = +90.0°C, crit = +100.0°C)

В данном примере отображается информация сразу с нескольких аппаратных датчиков:

  • nct6779-isa-0a20 - датчики материнской платы, включая напряжения питания, скорость вращения вентиляторов и температуру различных компонентов.
  • nvme-pci-0100 - температура NVMe-накопителя.
  • coretemp-isa-0000 - температура процессора Intel, включая общую температуру корпуса процессора (Package) и температуру каждого отдельного ядра (Core).

Примечание

Некоторые значения могут отображаться с пометкой ALARM или иметь явно некорректные показания, например AUXTIN1: +106°C. В большинстве случаев это связано с отсутствующими или неподключенными датчиками на материнской плате и не свидетельствует о перегреве оборудования. При анализе следует ориентироваться на температуру процессора (Package, Core), накопителей (NVMe) и подключенных вентиляторов.

Состав выводимой информации зависит от оборудования вашего компьютера и поддержки датчиков со стороны ядра Linux. На одном компьютере lm-sensors может отображать только температуру процессора, а на другом - дополнительно напряжения питания, скорость вращения вентиляторов, температуру материнской платы, чипсета и накопителей. Поэтому вывод команды sensors может значительно отличаться от приведенного в данной статье.

Просмотр только температуры процессора

Если необходимо быстро получить только температуру процессора:

sensors | grep Core

или

sensors | grep Package

Непрерывный мониторинг

Для обновления информации каждые две секунды можно использовать:

watch -n2 sensors

изображение.png

В результате значения будут автоматически обновляться в терминале.

Контроль температуры NVMe

Если установлен NVMe SSD, его температура также отображается через lm-sensors.

Кроме этого можно воспользоваться утилитой nvme-cli:

sudo nvme smart-log /dev/nvme0

изображение.png

или

sudo nvme smart-log /dev/nvme0 | grep temperature

Получение температуры жесткого диска

Для SATA-дисков чаще используется smartctl:

sudo smartctl -A /dev/sda | grep Temperature

изображение.png

или

sudo smartctl -A /dev/sda | grep Celsius

Это позволяет получить температуру даже в случаях, когда lm-sensors ее не отображает.

Почему отсутствуют некоторые датчики

Если после запуска sensors отображается мало информации, возможны несколько причин:

  • оборудование не поддерживает аппаратный мониторинг;

  • отсутствует драйвер датчика;

  • BIOS отключает передачу некоторых данных;

  • используется виртуальная машина;

  • контроллер не поддерживается текущей версией ядра Linux.

Это нормальная ситуация и не всегда свидетельствует о неисправности оборудования.

Мониторинг в Zabbix

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

Наиболее популярные решения:

  • Zabbix-lm-sensors-lld - шаблон и скрипты для автоматического обнаружения датчиков lm-sensors с использованием низкоуровневого обнаружения.
  • zabbix-sensors - проект для интеграции lm-sensors с Zabbix, позволяющий автоматически получать температуру, напряжения, скорость вращения вентиляторов и другие аппаратные параметры.

Полезные команды

Проверить наличие датчиков:

sudo sensors-detect

Показать все показания:

sensors

Обновлять данные каждые две секунды:

watch -n2 sensors

Показать загруженные модули:

lsmod | grep temp

Загрузить модуль Intel:

sudo modprobe coretemp

Загрузить модуль AMD:

sudo modprobe k10temp

Заключение

lm-sensors является стандартным инструментом Linux для мониторинга аппаратных датчиков. Утилита проста в настройке, практически не потребляет системные ресурсы и поддерживает большинство современных процессоров Intel и AMD.

Использование lm-sensors позволяет своевременно обнаружить перегрев оборудования, контролировать работу системы охлаждения и использовать полученные данные в различных системах мониторинга.