ELXSoftware

Мониторинг серверов

ELX-HealthMonitor

Что сервер под Linux делает сейчас и что делал неделю назад

Агент мониторинга с веб-интерфейсом, историей в SQLite и оповещениями по почте. Один исполняемый файл без зависимостей: фронтенд внутри бинарника, база создаётся сама. На четырёхлетнем Celeron это около четырёх процентов одного ядра и одиннадцати мегабайт памяти.

v1.0.0 LinuxARM Бесплатно

Читается из ядра, а не угадывается

Всё берётся напрямую из /proc, /sys и smartctl. Не нужно ставить коллектор, поднимать базу временных рядов и держать в согласии пару «агент и сервер».

Диски — до того, как они умрут

Здоровье SMART, температура, наработка, переназначенные и нестабильные секторы, ошибки CRC, износ SSD и объём записи за весь срок — с полной таблицей атрибутов, когда хочется посмотреть внимательнее.

RAID, включая неудобную правду

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

Службы со своим вводом-выводом

Каждый юнит systemd с его процессором, памятью, чтением и записью диска, числом задач и перезапусками — и кнопки пуска, остановки и смены автозапуска.

Оповещения, которые не кричат зря

В правиле есть выдержка: скачок до полной загрузки на десять секунд письма не вызовет, а десять минут на этом уровне — вызовет. Именно эта настройка отличает письма, которые читают, от писем, которые фильтруют.

История, которая не растёт бесконечно

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

Что измеряется

РазделПоказатели
ПроцессорОбщая загрузка и по каждому ядру, user/system/iowait/steal, частота, средняя нагрузка, переключения контекста, очередь
ПамятьЗанято, доступно, кэш, буферы, slab, грязные страницы, подкачка и интенсивность обращений к ней
ДискиСкорость чтения и записи, IOPS, задержка, занятость устройства, модель, объём
Файловые системыЗанято, свободно, процент, inode
SMARTЗдоровье, температура, наработка, переназначенные и нестабильные секторы, ошибки CRC, износ SSD, объём записи за срок, полная таблица атрибутов
RAIDСостояние массивов md, уровень, состав, отказавшие диски, ход и скорость ресинхронизации, текущая синхронность копий и расхождения последней проверки
СетьПриём и передача в байтах и пакетах, ошибки и потери, состояние линка, скорость порта, адреса, MTU
ТемператураВсе датчики hwmon и термозоны ACPI, плюс температуры накопителей из SMART
СлужбыСостояние и автозапуск юнитов systemd, процессор, память, запись и чтение диска по каждой службе, число задач, перезапуски
ПроцессыТоп по процессору и по памяти, дисковая активность, владелец, юнит

Каждый раздел выключается отдельно, и выключенная подсистема не опрашивается вовсе.

Вопрос о RAID, который стоит задать

Зеркальный массив хранит на дисках одинаковые данные, но запись доходит до них не одновременно. Ядро отмечает области возможного расхождения в карте намерений записи, и этот агент показывает её прямо: пока «грязных» областей ноль — копии идентичны, всё, что больше нуля, означает идущую досинхронизацию.

Рядом — число расхождений последней проверки целостности. Ненулевое значение означает, что накопитель или контроллер вернул разные данные с двух половин зеркала, — а это ровно тот отказ, ради которого мониторинг и существует, и ровно тот, который скрывает зелёная надпись «массив исправен».

Во что это обходится

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

ПараметрПо умолчаниюЧто задаёт
interval_sec3 сОсновной цикл опроса
services.interval_sec15 сПолный обход юнитов systemd
disk.smart_interval_sec900 сОпрос SMART — именно он будит диски
storage.persist_interval_sec30 сЗапись среза в историю

Измерено на четырёхъядерном Celeron J1900 со 165 юнитами systemd и пятью дисками: около четырёх процентов одного ядра и одиннадцать мегабайт памяти. На Xeon E5-2690 — меньше трёх процентов ядра.

Интерфейс

  • Браузер запоминает ваш выбор: период на каждом графике, скрытые щелчком по легенде кривые, фильтры таблицы служб и журнала событий. Перезагрузка страницы не сбрасывает ничего.
  • Все кривые растут вверх от нуля, единица на оси подбирается по диапазону, а число знаков — по шагу сетки, поэтому соседние отметки никогда не превращаются в одинаковые подписи.
  • После обновления открытая вкладка сама замечает смену версии, сообщает об этом и перезагружается — старый интерфейс не остаётся висеть в кэше браузера.
  • Кнопки перезагрузки и выключения машины — в шапке; если они не нужны, их убирает один ключ конфигурации.
  • Каждое необратимое действие закрыто подтверждением, которое объясняет последствие, а кнопка подписана самим действием, а не словом «ОК».

Коротко о главном

Операционные системы
Debian и Ubuntu с systemd
Архитектуры
amd64, arm64, armhf
Веб-интерфейс
Порт 8555 по умолчанию
История
SQLite; 3 суток в исходном виде, 31 день свёрнутая
Необязательная зависимость
smartmontools, для раздела SMART
Типичный расход
~4% одного ядра, ~11 МБ памяти
Оповещения
Почта по SMTPS, STARTTLS или без шифрования
Настройка
Веб-интерфейс или config.json

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

Нужна ли база данных или коллектор?
Нет. Агент — один бинарник, а история — файл SQLite, который он создаёт сам. Ставить что-то центральное не требуется.
Что будет, если нет smartmontools?
Работает всё, кроме раздела SMART, и интерфейс прямо об этом говорит, а не показывает пустые панели.
Пойдёт ли на Raspberry Pi?
Да — соберите или возьмите бинарник arm64 либо armhf. Расход настолько мал, что одноплатник почти его не замечает.
Может ли он перезапускать службы?
Да, прямо из таблицы служб: пуск, остановка и смена автозапуска. Каждое действие сначала подтверждается.
Как долго хранится история?
Трое суток в исходном разрешении, затем пятиминутные интервалы со средним, минимумом и максимумом, и удаление через месяц. Все три срока настраиваются.
Можно ли следить за несколькими машинами из одного места?
На каждой машине работает свой агент со своим интерфейсом. Это и есть размен: не нужно поддерживать центральный сервер, но и единого экрана на всё нет.

ELX-HealthMonitor

Что сервер под Linux делает сейчас и что делал неделю назад

Скачать