Технологии #Linux #Ubuntu #Сервер #Мониторинг #Железо

Мониторинг температуры в Linux: датчики, диски и оповещения

Как посмотреть температуру процессора, дисков и видеокарты в Linux: настройка lm-sensors, мониторы btop и glances, температура SATA и NVMe через smartctl, управление вентиляторами и оповещение в Telegram при перегреве.

8 минут 1

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

Ниже — как за десять минут получить температуры процессора, дисков и видеокарты, где смотреть их в удобном виде и как настроить, чтобы сервер сам написал в Telegram, если перегрелся. Конструктор соберёт команды под вашу систему.

Конструктор команд: температура и датчики

Выберите задачу — получите команды для датчиков, температуры дисков, мониторов в терминале и оповещений о перегреве.

Команды выполняются по порядку сверху вниз

Датчики процессора: lm-sensors

Базовый инструмент — пакет lm-sensors. Он читает показания с датчиков материнской платы и процессора и показывает их одной командой.

После установки нужно один раз запустить поиск датчиков: sudo sensors-detect --auto. Мастер пройдётся по шинам, найдёт микросхемы мониторинга и запишет нужные модули ядра в автозагрузку. Ключ --auto отвечает на все вопросы безопасными значениями — без него мастер задаст полтора десятка вопросов про сканирование, и на некоторые лучше отвечать «нет» вслепую не стоит.

Дальше достаточно набрать sensors:

Пример вывода
coretemp-isa-0000
Package id 0:  +42.0°C  (high = +100.0°C, crit = +100.0°C)
Core 0:        +41.0°C
Core 1:        +40.0°C
nvme-pci-0100
Composite:     +38.9°C  (low = -40.1°C, high = +84.8°C)

Читается так: Package id 0 — температура всего кристалла процессора, Core N — отдельных ядер, high и crit — пороги, заложенные производителем. Когда температура подходит к crit, процессор начинает сбрасывать частоту, а на пороге выключается совсем, чтобы не сгореть.

Какие цифры нормальны. Для домашнего сервера в простое это 30–50 °C, под нагрузкой — до 70–80 °C. Для ноутбука под нагрузкой и 90 °C не катастрофа: современные процессоры рассчитаны на это и сами снижают частоту. Тревожиться стоит, когда в простое держится выше 60 °C или под нагрузкой упирается в crit — это про засохшую термопасту и забитый пылью радиатор, а не про настройки.

Если датчиков не нашлось. В виртуальных машинах и контейнерах их нет в принципе: гипервизор не прокидывает внутрь физические датчики. Температуру там смотрят на самом хосте. На серверном железе бывает, что показания отдаёт только IPMI — тогда ставят ipmitool и читают через него.

Температура дисков

Раньше для этого ставили hddtemp, но его выкинули из современных Debian и Ubuntu. Сейчас проще и правильнее два пути.

Модуль ядра drivetemp — самый удобный. Одна команда подключает модуль, и температуры SATA-дисков начинают показываться прямо в выводе sensors, вместе с процессором. Чтобы не пропадало после перезагрузки, имя модуля дописывают в автозагрузку.

smartctl — для полной картины. Он читает SMART-данные диска: не только температуру, но и то, что важнее — есть ли переназначенные секторы и насколько исчерпан ресурс:

  • Reallocated_Sector_Ct больше нуля — на диске появились битые секторы, которые он подменил резервными. Само по себе не приговор, но повод начать копировать данные.
  • Current_Pending_Sector — секторы, с которых не читается. Вот это уже плохо.
  • Для NVMe смотрят percentage_used: это выработанный ресурс записи в процентах.

Нормальная температура диска — 30–45 °C. Для жёстких дисков вредно и то и другое: выше 50 °C сокращает срок службы, ниже 20 °C тоже не полезно. NVMe греются сильнее, 50–60 °C под нагрузкой для них обычное дело, а при перегреве они сами сбрасывают скорость.

Если дисков несколько и хочется, чтобы система сама следила за ними, включите службу smartd — она проверяет SMART по расписанию и ругается, когда показатели поползли.

Где смотреть: мониторы в терминале

Голый sensors хорош для разового взгляда. Для постоянного наблюдения удобнее полноценные мониторы.

btop — самый наглядный. Процессор по ядрам, память, диски, сеть, процессы и температуры на одном экране, с графиками и мышью. Ставится одной командой, настройки не требует. Для большинства задач этого достаточно.

glances — менее красивый, зато умеет то, чего нет у btop: веб-интерфейс и вывод данных в машинных форматах. Запущенный с ключом -w, он поднимает страницу, которую можно открыть с ноутбука или телефона. Удобно для сервера без монитора. Только не выставляйте этот порт наружу: там видно всё про вашу машину, а никакой авторизации по умолчанию нет.

nvtop — если в машине есть дискретная видеокарта: показывает её загрузку, память и температуру.

Для сервера, который работает постоянно, glances имеет смысл запустить службой systemd — тогда веб-интерфейс будет доступен всегда, а не только пока открыт терминал. Команда для файла службы есть в конструкторе.

Оповещение при перегреве

Смотреть на графики каждый день никто не будет. Правильнее настроить так, чтобы сервер сам сообщил, когда что-то пошло не так.

Схема простая: небольшой скрипт читает максимальную температуру из sensors, сравнивает с порогом и, если превышено, отправляет сообщение в Telegram. Запускается таймером systemd раз в пять минут. Всё это — три файла и пять минут работы, команды в конструкторе, в задаче «Оповещение о перегреве».

Два момента, которые стоит сделать правильно:

Токен бота — в отдельный файл с правами 600. Не в сам скрипт: скрипты часто лежат с правами на чтение для всех, и токен утечёт первому же пользователю системы. Если токен всё-таки засветился, отзовите его у @BotFather командой /revoke и получите новый.

Таймер systemd вместо cron. У него видно, когда было последнее срабатывание и когда будет следующее (systemctl list-timers), а ошибки скрипта попадают в общий журнал. С cron всё это приходится выяснять окольными путями.

Порог для домашнего сервера обычно ставят на 75–80 °C: это заметно выше рабочей температуры, но ниже, чем начнётся сброс частоты.

Управление вентиляторами

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

Настройка начинается с мастера pwmconfig. Он по очереди останавливает каждый вентилятор и смотрит, какой датчик на это реагирует, чтобы связать их между собой. Во время работы мастера вентиляторы будут замирать на несколько секунд — это нормально, но запускать его под нагрузкой не стоит.

В получившемся файле /etc/fancontrol главные параметры — MINTEMP и MAXTEMP: ниже первой температуры вентилятор стоит, выше второй крутится на максимуме, между ними — плавно.

Работает это не везде. На многих материнских платах, особенно в готовых мини-ПК и ноутбуках, оборотами управляет контроллер платы, и системе он их не отдаёт. Проверяется просто: если в /sys/class/hwmon/ нет файлов pwm*, управлять нечем, и остаётся только настройка в BIOS.

Особый случай: Proxmox и контейнеры

Если у вас гипервизор, помните главное: датчики есть только у хоста. Внутри контейнера или виртуальной машины ставить lm-sensors бессмысленно — там нечего читать.

Поэтому пакет ставится на сам хост Proxmox, там же подключается drivetemp для дисков, и оттуда же удобно смотреть общую картину: температура процессора, дисков и текущая нагрузка от всех виртуалок разом.

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

Частые вопросы

Почему команда sensors ничего не выводит?

Либо не запускался sensors-detect, либо система работает в виртуальной машине, где датчиков нет. Проверить можно командой ls /sys/class/hwmon/ — если каталог пуст, читать нечего.

Какая температура процессора опасна?

Ориентируйтесь не на абстрактные цифры, а на значение crit в выводе sensors — его задаёт производитель. Обычно это 100 °C для настольных процессоров. Постоянная работа вблизи этого порога сокращает срок службы, но система сама снизит частоту раньше, чем что-то сгорит.

Как посмотреть температуру видеокарты?

Для NVIDIA — nvidia-smi или nvtop. Для AMD и встроенной графики Intel показания обычно появляются в обычном sensors после настройки lm-sensors.

Можно ли следить за температурой удалённо?

Да: веб-интерфейс glances, оповещения в Telegram или полноценный мониторинг вроде Netdata и Zabbix. Для дома первых двух вариантов хватает с избытком.

Диск греется до 50 °C — это много?

Для жёсткого диска многовато: выше 50 °C заметно сокращается срок службы, стоит подумать о вентиляции корпуса. Для NVMe это нормальная рабочая температура.

Что дальше

Мониторинг — часть обслуживания сервера. Рядом обычно стоят защита сервера после установки и проверка скорости дисков: вместе они дают понимание того, что с машиной всё в порядке — и по нагреву, и по скорости, и по доступу.

Статья помогла?

Комментарии

Пока никто не написал. Будьте первым — вопрос или свой опыт одинаково полезны.

Комментарий появится после проверки. Ссылки и реклама не публикуются.