Мониторинг дискового пространства в Linux: Zabbix, Prometheus и альтернативы в 2026 | AdminWiki

Мониторинг дискового пространства в Linux: Zabbix, Prometheus и альтернативы в 2026

24 июля 2026 9 мин. чтения

Критерии выбора инструмента мониторинга дисков

Контроль свободного места на дисках 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% и регулярно проверяйте логи на наличие ошибок ввода-вывода. Дисковая подсистема отказывает предсказуемо - задача мониторинга в том, чтобы заметить деградацию до того, как она повлияет на пользователей.

Поделиться:
Сохранить гайд? В закладки браузера