Критерии выбора инструмента мониторинга дисков
Контроль свободного места на дисках Linux-серверов - базовая задача, от которой зависит стабильность сервисов. Переполнение раздела с логами или базой данных приводит к отказам в обслуживании, которые проще предотвратить, чем устранять. Выбор инструмента сводится к трём факторам: требуемая глубина анализа, скорость развёртывания и тип оповещений.
Для мгновенной визуализации без настройки подойдёт Netdata. Если нужен классический алертинг с гибкими порогами - Nagios. Глубокий анализ дисковой нагрузки и поиск узких мест даёт Atop. Работу с логами дисковых событий забирает на себя связка Grafana Loki и Promtail. Комплексный мониторинг инфраструктуры с автоматическим обнаружением новых дисков закрывают Zabbix и Prometheus. Детальные инструкции по каждому варианту - в следующих разделах.
Мониторинг дисков с Zabbix: шаблоны и низкоуровневое обнаружение (LLD)
Zabbix решает задачу мониторинга дисков через механизм низкоуровневого обнаружения (Low-Level Discovery, LLD). Вместо ручного добавления каждого раздела вы создаёте правило, которое автоматически находит файловые системы и генерирует элементы данных, триггеры и графики. При добавлении нового диска Zabbix подхватывает его без вмешательства администратора.
Установка и настройка Zabbix агента для сбора метрик дисков
Агент Zabbix собирает метрики файловых систем через встроенные ключи. Установите пакет на целевой хост:
# Для Debian/Ubuntu
apt install zabbix-agent
# Для RHEL/AlmaLinux/Rocky Linux
dnf install zabbix-agent
После установки отредактируйте конфигурационный файл /etc/zabbix/zabbix_agentd.conf. Укажите IP-адрес или DNS-имя Zabbix-сервера в параметре Server и перезапустите агент:
systemctl restart zabbix-agent
Проверьте доступность ключей с Zabbix-сервера утилитой zabbix_get:
zabbix_get -s 192.168.1.100 -k vfs.fs.size[/,total]
zabbix_get -s 192.168.1.100 -k vfs.fs.size[/,used]
zabbix_get -s 192.168.1.100 -k vfs.fs.inode[/,pused]
Первый ключ возвращает общий объём корневого раздела в байтах, второй - занятое пространство, третий - процент использованных inode. Если команды возвращают числовые значения, агент работает корректно.
Создание шаблона с LLD для файловых систем
Шаблон с LLD автоматизирует обнаружение всех файловых систем на хосте. В веб-интерфейсе Zabbix перейдите в раздел Data collection → Templates и создайте новый шаблон. Внутри шаблона добавьте правило обнаружения (Discovery rule):
- Имя: Обнаружение файловых систем
- Тип: Zabbix agent
- Ключ:
vfs.fs.discovery - Интервал обновления: 1h
Zabbix-агент возвращает JSON с перечнем разделов, исключая псевдофайловые системы (tmpfs, devtmpfs, squashfs). Каждый объект содержит макросы {#FSNAME} (точка монтирования) и {#FSTYPE} (тип файловой системы).
На вкладке Item prototypes создайте прототипы элементов данных:
Имя: Свободное место на {#FSNAME} (в процентах)
Ключ: vfs.fs.size[{#FSNAME},pfree]
Тип: Числовой (с плавающей точкой)
Интервал: 5m
Аналогично добавьте прототипы для общего объёма (vfs.fs.size[{#FSNAME},total]), занятого пространства (vfs.fs.size[{#FSNAME},used]) и использования inode (vfs.fs.inode[{#FSNAME},pused]).
На вкладке Trigger prototypes задайте условие срабатывания при заполнении раздела более чем на 80%:
Имя: Заполнение диска {#FSNAME} более 80%
Выражение: last(/Template Disk Monitoring/vfs.fs.size[{#FSNAME},pfree]) < 20
Серьёзность: High
Привяжите шаблон к целевым хостам через раздел Hosts. Zabbix выполнит обнаружение в течение часа и начнёт сбор метрик по всем найденным разделам.
Настройка алертов и дашбордов в Zabbix
Для отправки уведомлений настройте действие (Action) в разделе Alerts → Actions. Создайте новое действие с условием «Trigger severity = High» и операцией отправки сообщения через email, Telegram или корпоративный мессенджер. Zabbix поддерживает эскалацию: если проблема не решена за 30 минут, уведомление уходит следующему дежурному.
Визуализацию настройте через раздел Monitoring → Dashboards. Добавьте виджет «Graph» и выберите прототип элемента данных vfs.fs.size[{#FSNAME},pfree]. Zabbix автоматически построит график для каждого обнаруженного раздела. Для отображения состояния всех дисков на одном экране используйте карту сети (Map) с триггерами - проблемные разделы подсветятся красным.
Мониторинг дисков с Prometheus и Node Exporter
Prometheus собирает метрики по pull-модели: сервер опрашивает экспортеры, установленные на целевых хостах. Node Exporter предоставляет метрики операционной системы, включая файловые системы, дисковый ввод-вывод и использование inode. Развёртывание стека Prometheus и Grafana для кластерной инфраструктуры описано в отдельном руководстве - здесь сосредоточимся на дисковой подсистеме.
Установка и конфигурация Node Exporter
Node Exporter распространяется как статический бинарник. Загрузите актуальную версию с GitHub releases и установите как systemd-сервис:
wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
tar xzf node_exporter-1.8.2.linux-amd64.tar.gz
cp node_exporter-1.8.2.linux-amd64/node_exporter /usr/local/bin/
useradd -rs /bin/false node_exporter
Создайте unit-файл /etc/systemd/system/node_exporter.service:
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
Запустите сервис и проверьте доступность метрик:
systemctl daemon-reload
systemctl enable --now node_exporter
curl http://localhost:9100/metrics | grep node_filesystem
Вывод содержит строки с метриками node_filesystem_avail_bytes, node_filesystem_size_bytes, node_filesystem_free_bytes и node_disk_io_time_seconds_total. Каждая метрика размечена лейблами device, fstype и mountpoint.
Настройка Prometheus для сбора метрик дисков
Добавьте job в конфигурационный файл prometheus.yml:
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['192.168.1.100:9100', '192.168.1.101:9100']
Перезагрузите конфигурацию без остановки сервиса:
kill -HUP $(pidof prometheus)
Проверьте, что таргеты появились в веб-интерфейсе Prometheus на порту 9090 (раздел Status → Targets). Состояние «UP» подтверждает успешный сбор метрик.
Базовые PromQL-запросы для анализа дисков:
# Процент свободного места по точкам монтирования
(node_filesystem_avail_bytes / node_filesystem_size_bytes) * 100
# Свободное место в гигабайтах
node_filesystem_avail_bytes / 1024 / 1024 / 1024
# Утилизация дискового ввода-вывода в процентах
rate(node_disk_io_time_seconds_total[5m]) * 100
Визуализация в Grafana и настройка алертов
В Grafana импортируйте готовый дашборд Node Exporter Full (ID 1860) через меню Dashboards → Import. Дашборд содержит панели для мониторинга свободного места, использования inode и дисковой нагрузки. Для кастомного дашборда создайте панель с запросом (node_filesystem_avail_bytes{fstype!="tmpfs"} / node_filesystem_size_bytes{fstype!="tmpfs"}) * 100.
Алерты настраиваются через Alertmanager. Добавьте правило в конфигурацию Prometheus (alert.rules.yml):
groups:
- name: disk_alerts
rules:
- alert: DiskSpaceLow
expr: (node_filesystem_avail_bytes / node_filesystem_size_bytes) * 100 < 10
for: 5m
labels:
severity: critical
annotations:
summary: "Заканчивается место на диске {{ $labels.mountpoint }}"
description: "Раздел {{ $labels.mountpoint }} заполнен на {{ $value | humanize }}%"
Alertmanager отправит уведомление в настроенный канал (email, Slack, Telegram) при падении свободного места ниже 10% в течение пяти минут.
Альтернативные инструменты для мониторинга дисков
Zabbix и Prometheus закрывают потребности комплексного мониторинга, но в ряде сценариев эффективнее использовать специализированные инструменты. Сравнение Zabbix, Prometheus и Netdata для EdTech-платформ показывает, что выбор зависит от масштаба и требований к алертингу. Разберём четыре альтернативы, каждая из которых решает конкретную задачу.
Netdata: быстрая визуализация без настройки
Netdata устанавливается одной командой и сразу предоставляет интерактивный дашборд на порту 19999:
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh
После установки откройте http://server-ip:19999. Раздел Disks показывает графики свободного места, операций ввода-вывода, backlog и latency по каждому дисковому устройству. Netdata автоматически обнаруживает все разделы и строит визуализацию в реальном времени с детализацией до секунды. Это решение для случаев, когда нужно мгновенно оценить состояние дисковой подсистемы без написания конфигураций.
Netdata поддерживает алертинг через встроенный health-движок. При падении свободного места ниже 20% на любом разделе срабатывает предустановленный алерт, который можно направить в один из поддерживаемых каналов уведомлений.
Nagios: классический алертинг для дискового пространства
Nagios использует плагин check_disk для проверки свободного места. Установите пакет monitoring-plugins и настройте команду в конфигурации NRPE на целевом хосте (/etc/nagios/nrpe.cfg):
command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p / -p /var
Параметр -w 20% задаёт порог предупреждения (warning), -c 10% - критический порог (critical). Флаг -p указывает разделы для проверки. На сервере Nagios создайте определение сервиса:
define service {
use generic-service
host_name linux-server
service_description Disk Space
check_command check_nrpe!check_disk
}
При пересечении порога Nagios отправляет уведомление и меняет статус сервиса. Система эскалации и расписания уведомлений настраиваются гибко: можно задать повторные оповещения через заданные интервалы и маршрутизацию по группам администраторов.
Atop: глубокий анализ дисковой нагрузки
Atop собирает детальную статистику по дисковой подсистеме, включая загрузку устройства, среднее время ожидания и количество операций чтения/записи. Запустите утилиту с флагом -d для фокуса на дисках:
atop -d
Вывод показывает для каждого дискового устройства:
- busy - процент времени, в течение которого устройство было занято обработкой запросов;
- read/write - количество операций чтения и записи в секунду;
- avio - среднее время выполнения запроса в миллисекундах.
Atop пишет сырые данные в бинарные логи (/var/log/atop/). Для ретроспективного анализа используйте команду atop -r /var/log/atop/atop_20260724 и перемещайтесь по временным срезам клавишами t (вперёд) и T (назад). Это позволяет найти момент начала деградации дисковой подсистемы и сопоставить его с другими событиями на сервере.
Grafana Loki: мониторинг логов дисковых событий
Метрики показывают, что диск заполняется, но не объясняют причину. Логи ядра и системных сервисов содержат записи об ошибках ввода-вывода, проблемах с контроллером и сбоях файловой системы. Grafana Loki агрегирует эти логи и позволяет коррелировать их с метриками на одном дашборде Grafana.
Установите Promtail - агент для сбора логов. Конфигурация /etc/promtail/config.yml для захвата логов ядра:
scrape_configs:
- job_name: kernel
static_configs:
- targets:
- localhost
labels:
job: kernel
__path__: /var/log/kern.log
В Grafana создайте запрос LogQL для поиска ошибок дисков:
{job="kernel"} |= "I/O error" or |= "ext4" or |= "Buffer I/O error"
Результат отобразит временную шкалу дисковых событий. Совместите панель с логами и панель с метриками дисковой нагрузки из Prometheus на одном дашборде - это даст полную картину: рост загрузки диска, совпадающий с потоком ошибок в логах, указывает на аппаратную проблему.
Сравнение инструментов и итоговые рекомендации
Каждый инструмент закрывает свой сегмент задач. Таблица ниже суммирует ключевые характеристики по шести критериям.
| Критерий | Zabbix | Prometheus | Netdata | Nagios | Atop | Grafana Loki |
|---|---|---|---|---|---|---|
| Простота настройки | Средняя (шаблоны) | Средняя (конфиги) | Минимальная | Высокая сложность | Минимальная | Средняя |
| Визуализация | Встроенные графики и карты | Через Grafana | Готовый дашборд | Минимальная | Текстовый интерфейс | Через Grafana |
| Алертинг | Гибкий, с эскалацией | Через Alertmanager | Базовый | Гибкий, классический | Отсутствует | Через правила |
| Глубина анализа | Метрики и тренды | Метрики и PromQL | Поверхностный | Проверка порогов | Детальный посекундный | Анализ логов |
| Работа с логами | Нет | Нет | Нет | Нет | Нет | Да |
| Масштабируемость | Прокси-архитектура | Федерация | Один хост | Распределённая | Один хост | Горизонтальная |
Рекомендации для типовых сценариев:
- Мониторинг 5–50 серверов с единым окном управления. Выбирайте Zabbix. Шаблоны с LLD экономят время при добавлении новых хостов, а встроенная система эскалаций закрывает требования по регламенту реагирования. Базовые метрики CPU, памяти и сети настраиваются по тому же принципу, что и диски.
- Облачная или контейнерная инфраструктура. Используйте Prometheus с Node Exporter. PromQL даёт гибкость в построении запросов, а интеграция с Grafana позволяет создать дашборд, объединяющий метрики дисков, сети и приложений. Архитектура сбора данных на Prometheus и Grafana детально разобрана в профильном руководстве.
- Быстрая диагностика на одном сервере. Netdata и Atop дополняют друг друга: первый даёт мгновенную визуализацию, второй - ретроспективный анализ дисковой нагрузки. Установите оба, они не конфликтуют.
- Расследование инцидентов. Связка Prometheus + Grafana Loki забирает на себя полный цикл: метрики показывают аномалию, логи объясняют причину. Мониторинг загрузки файлов на сервере с интеграцией в Zabbix или Prometheus закрывает смежную задачу контроля трафика и дисковой активности при передаче данных.
Независимо от выбранного инструмента, настройте алертинг на порог свободного места ниже 10–20% и регулярно проверяйте логи на наличие ошибок ввода-вывода. Дисковая подсистема отказывает предсказуемо - задача мониторинга в том, чтобы заметить деградацию до того, как она повлияет на пользователей.