Мониторинг оборудования в Linux с помощью lm-sensors
| Подробности урока | |
|---|---|
| Уровень сложности | Лёгкий |
| Права 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
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
или просто нажимать:
Enter
для выбора значения по умолчанию.
После завершения проверки будет показан список необходимых модулей ядра.
В данном примере были обнаружены:
- 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
В результате значения будут автоматически обновляться в терминале.
Контроль температуры NVMe
Если установлен NVMe SSD, его температура также отображается через lm-sensors.
Кроме этого можно воспользоваться утилитой nvme-cli:
sudo nvme smart-log /dev/nvme0
или
sudo nvme smart-log /dev/nvme0 | grep temperature
Получение температуры жесткого диска
Для SATA-дисков чаще используется smartctl:
sudo smartctl -A /dev/sda | grep Temperature
или
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 позволяет своевременно обнаружить перегрев оборудования, контролировать работу системы охлаждения и использовать полученные данные в различных системах мониторинга.






