Netdata: установка в Docker, настройка дашбордов и сравнение с Prometheus для мониторинга сервера | AdminWiki

Netdata: установка в Docker, настройка дашбордов и сравнение с Prometheus для мониторинга сервера

26 июля 2026 12 мин. чтения

Сервер начинает тормозить в самый неподходящий момент. Вы подключаетесь по SSH, запускаете top или htop и пытаетесь на лету понять, что пошло не так. Этот подход работает, но он медленный и неудобный. Netdata решает проблему иначе: вы запускаете один контейнер и через 5 секунд видите тысячи метрик в реальном времени с задержкой в 1 секунду. Никаких конфигурационных файлов, никакой настройки экспортеров. Эта статья - практическое руководство по установке Netdata в Docker, настройке встроенных дашбордов и сравнению с Prometheus для двух ключевых сценариев: быстрой диагностики инцидентов и долгосрочного мониторинга инфраструктуры.

Мы пройдем весь путь: от команды docker run до кастомизации алертов в Slack. Вы получите готовые конфигурации, цифры по потреблению ресурсов и четкие критерии выбора между Netdata и Prometheus. Все инструкции проверены на актуальных версиях ПО в 2026 году.

Зачем нужен Netdata: мониторинг сервера в реальном времени без лишних настроек

Традиционные системы мониторинга требуют предварительной настройки. Prometheus нужно сконфигурировать, прописать таргеты, установить экспортеры, создать дашборды в Grafana. Zabbix требует развертывания сервера, агентов и шаблонов. Это оправдано для крупной инфраструктуры, но для быстрой диагностики конкретного сервера такой подход избыточен.

Netdata работает иначе. После запуска контейнера агент автоматически обнаруживает все запущенные сервисы: Docker-контейнеры, Nginx, MySQL, PostgreSQL, Redis и десятки других. Вы сразу видите графики CPU, RAM, дискового I/O, сетевой активности и сотни других метрик. Задержка от сбора до отображения - 1 секунда. Это не пакетный сбор раз в минуту, а настоящий real-time.

Архитектура Netdata построена на модульном ядре с плагинами. Каждый плагин отвечает за сбор метрик из определенного источника: /proc, /sys, cgroups, Docker API, stub_status Nginx. Плагины запускаются независимо и передают данные в ядро, которое агрегирует их и отдает на веб-интерфейс. Благодаря этому вы получаете тысячи метрик без единой правки конфигурации.

Пример из практики: вы замечаете аномальную нагрузку на сервер. Запускаете Netdata одной командой, открываете веб-интерфейс на порту 19999 и через 5 секунд видите полную картину: какой процесс потребляет CPU, что происходит с дисковым I/O, какие контейнеры создают нагрузку. Это экономит минуты, которые критичны при инциденте.

Для более глубокого понимания экосистемы мониторинга рекомендуем наше сравнение Zabbix, Prometheus и Netdata, где мы разбираем выбор инструмента под конкретный масштаб и бюджет.

Установка Netdata в Docker: пошаговая инструкция

Базовая команда для запуска контейнера

Самый быстрый способ запустить Netdata - использовать официальный Docker-образ. Приведенная ниже команда проверена на Docker 26+ и содержит минимально необходимый набор параметров для полноценного мониторинга хостовой системы.

docker run -d \
  --name=netdata \
  --pid=host \
  --network=host \
  -v netdataconfig:/etc/netdata \
  -v netdatalib:/var/lib/netdata \
  -v netdatacache:/var/cache/netdata \
  -v /:/host:ro,rslave \
  -v /etc/passwd:/host/etc/passwd:ro \
  -v /etc/group:/host/etc/group:ro \
  -v /proc:/host/proc:ro \
  -v /sys:/host/sys:ro \
  -v /etc/os-release:/host/etc/os-release:ro \
  --cap-add SYS_PTRACE \
  --restart unless-stopped \
  netdata/netdata

Разберем ключевые параметры. --pid=host предоставляет контейнеру доступ к пространству PID хоста. Это критично для мониторинга всех процессов, а не только процессов внутри контейнера. Без этого флага вы увидите только PID 1 самого контейнера.

--network=host отключает сетевую изоляцию контейнера. Netdata использует этот режим для сбора сетевых метрик хоста и автообнаружения сервисов, слушающих на локальных интерфейсах. Если вам нужна сетевая изоляция, можно использовать bridge-сеть, но тогда часть сетевых метрик будет недоступна.

Три именованных volume - netdataconfig, netdatalib, netdatacache - сохраняют конфигурацию, библиотеки и кэш между перезапусками контейнера. Это важно: при обновлении образа ваши настройки не потеряются.

Проброс /:/host:ro,rslave монтирует корневую файловую систему хоста в режиме только для чтения с флагом rslave. Это нужно для доступа к логам, конфигурациям сервисов и другим данным за пределами /proc и /sys. Флаг rslave обеспечивает корректную работу с mount-пространствами.

--cap-add SYS_PTRACE добавляет capability для трассировки процессов. Без этого Netdata не сможет собирать детальные метрики по процессам, включая использование памяти и количество потоков.

--restart unless-stopped гарантирует, что контейнер автоматически перезапустится после перезагрузки сервера, пока вы явно не остановите его командой docker stop.

Проверка работы и первый вход в дашборд

После запуска контейнера откройте браузер и перейдите по адресу http://server-ip:19999. Вы увидите обзорный дашборд с ключевыми метриками: загрузка CPU, потребление RAM, сетевая активность, дисковые операции. Интерфейс загружается мгновенно, все графики интерактивны.

Если интерфейс недоступен, проверьте статус контейнера:

docker ps | grep netdata

Контейнер должен быть в статусе Up. Если его нет в списке, посмотрите логи:

docker logs netdata

Типичная проблема - файрвол блокирует порт 19999. Для iptables выполните:

iptables -A INPUT -p tcp --dport 19999 -j ACCEPT

Для firewalld:

firewall-cmd --add-port=19999/tcp --permanent
firewall-cmd --reload

Еще одна возможная ошибка - недостаток прав на чтение /proc или /sys. Убедитесь, что вы запускаете контейнер от root или пользователя с достаточными capabilities. Если вы используете rootless Docker, часть метрик будет недоступна. В этом случае добавьте флаг --user root к команде запуска.

После успешного запуска вы увидите в дашборде секции: System Overview, CPU, Memory, Disk, Network, а также группы для обнаруженных сервисов. Netdata автоматически находит Docker-контейнеры, системные службы и популярные приложения.

Настройка дашбордов и оповещений в Netdata

Кастомизация дашборда: скрываем ненужные графики

После запуска Netdata показывает все метрики, которые смог обнаружить. Для сервера с десятком сервисов это сотни графиков. Часть из них вам не нужна. Например, если вы не используете SNMP, соответствующие графики только загромождают интерфейс.

Все настройки хранятся в файле netdata.conf внутри контейнера по пути /etc/netdata/netdata.conf. Поскольку мы пробросили volume netdataconfig, изменения сохранятся между перезапусками.

Чтобы отключить ненужный плагин, зайдите в контейнер:

docker exec -it netdata bash

Отредактируйте конфигурацию:

cd /etc/netdata
./edit-config netdata.conf

Найдите секцию [plugins] и добавьте строки для отключения ненужных модулей. Например, для отключения SNMP:

[plugins]
    snmp = no

После редактирования перезапустите контейнер:

docker restart netdata

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

Настройка оповещений: Slack и email

Netdata поставляется с предустановленными порогами алертов для большинства метрик. По умолчанию алерты отображаются только в веб-интерфейсе. Чтобы получать уведомления в Slack или по email, настройте health_alarm_notify.conf.

Внутри контейнера выполните:

cd /etc/netdata
./edit-config health_alarm_notify.conf

Для Slack найдите и раскомментируйте строки:

SEND_SLACK="YES"
SLACK_WEBHOOK_URL="https://hooks.slack.com/services/YOUR/WEBHOOK/URL"

Для email:

SEND_EMAIL="YES"
DEFAULT_RECIPIENT_EMAIL="admin@example.com"

Также укажите SMTP-сервер, если он отличается от localhost:

EMAIL_SENDER="netdata@example.com"
SMTP_SERVER="smtp.example.com"
SMTP_PORT="587"
SMTP_USERNAME="user"
SMTP_PASSWORD="password"

После сохранения файла перезапустите контейнер. Для проверки отправки тестового алерта выполните внутри контейнера:

/usr/libexec/netdata/plugins.d/alarm-notify.sh test

Вы получите тестовое уведомление в настроенные каналы. Если уведомление не пришло, проверьте логи:

docker logs netdata | grep alarm

Для изменения порога срабатывания алерта отредактируйте соответствующий файл в директории /etc/netdata/health.d/. Например, для CPU:

cd /etc/netdata/health.d
./edit-config cpu.conf

Найдите секцию с алертом cpu_usage и измените значение warn или crit. По умолчанию предупреждение срабатывает при 80% утилизации CPU за 10 минут. Вы можете снизить порог до 70% или изменить временной интервал.

Потребление ресурсов Netdata: цифры и факты

Распространенное опасение: «Netdata покажет красивые графики, но сам будет потреблять ресурсы сервера». Это опасение имеет основания, но реальные цифры значительно ниже ожиданий.

По данным официальной документации и нашим тестам на стандартном VPS с 4 vCPU и 8 ГБ RAM, Netdata потребляет:

  • CPU: 1-2% от одного ядра при стандартной частоте сбора метрик (раз в секунду)
  • RAM: 30-50 МБ в режиме покоя, до 100 МБ при высокой активности
  • Дисковый I/O: минимальный, все данные хранятся в RAM с циклической записью на диск раз в несколько секунд

Для сравнения: Prometheus Node Exporter потребляет около 10 МБ RAM, но не предоставляет визуализации и не собирает тысячи метрик автоматически. Grafana, необходимая для визуализации данных Prometheus, добавляет еще 50-80 МБ RAM. Таким образом, связка Node Exporter + Prometheus + Grafana в сумме потребляет сопоставимый объем ресурсов.

Потребление CPU растет линейно с количеством собираемых метрик. На сервере с 50+ Docker-контейнерами и активным Nginx потребление может достигать 3-5% CPU. Это объясняется тем, что каждый плагин работает в отдельном потоке и собирает данные независимо.

Если потребление CPU критично для вашего сценария, снизьте частоту сбора метрик. В файле netdata.conf измените параметр:

[global]
    update every = 2

Это увеличит интервал сбора до 2 секунд и снизит нагрузку на CPU примерно на 40%. Для большинства сценариев задержка в 2 секунды некритична.

Netdata хранит метрики в оперативной памяти с автоматической агрегацией. По умолчанию детализированные данные (с секундным разрешением) хранятся 1 час, поминутные данные - 24 часа, почасовые - 7 дней. Это настраивается в netdata.conf через параметры dbengine multihost disk space и dbengine page cache size.

Netdata vs Prometheus: сравнение для двух сценариев мониторинга

Выбор между Netdata и Prometheus зависит от задачи. Оба инструмента собирают метрики, но архитектура и сценарии использования различаются кардинально. Ниже - объективное сравнение по ключевым критериям.

Критерий Netdata Prometheus
Установка Одна команда docker run, работает сразу Требует настройки таргетов, exporter'ов, часто Grafana
Визуализация Встроенные дашборды, тысячи графиков из коробки Через Grafana, дашборды создаются вручную или импортируются
Глубина метрик Тысячи метрик автоматически, автообнаружение сервисов Зависит от exporter'ов, каждый сервис нужно настраивать отдельно
Масштабирование Один агент на сервер, без централизации Федерация, долговременное хранение в Thanos/VictoriaMetrics
Язык запросов Нет, только предустановленные графики PromQL для сложных аналитических запросов
Алертинг Встроенный, с порогами из коробки Alertmanager, гибкие правила на PromQL
Хранение истории До 7 дней по умолчанию, настраивается Годы, зависит от дискового пространства

Эти различия определяют два основных сценария использования.

Сценарий 1: Быстрая диагностика проблем на сервере

Сервер начал тормозить, время ответа API выросло с 50 мс до 2 секунд. Вам нужно немедленно найти причину. Вы запускаете Netdata одной командой и через 5 секунд видите: утилизация CPU под 100%, процесс php-fpm создает аномальную нагрузку, дисковый I/O на разделе с логами вырос в 10 раз. Вы локализуете проблему за минуту, не настраивая ни одного конфигурационного файла.

В этом сценарии Netdata незаменим. Он не требует подготовки, не зависит от внешних систем и показывает все метрики сразу. Prometheus для такой задачи не подходит: вам нужно заранее настроить экспортеры, прописать таргеты, создать дашборды. Если инцидент уже произошел, настраивать мониторинг поздно.

Дополнительный плюс Netdata - автоматическое обнаружение аномалий. Встроенные алерты срабатывают при отклонении метрик от нормы, и вы видите проблемные графики с подсветкой на дашборде. Это ускоряет диагностику даже без глубокого знания системы.

Сценарий 2: Долгосрочный мониторинг и аналитика

Вы управляете инфраструктурой из 50+ серверов. Вам нужны ответы на вопросы: «Как менялась утилизация CPU за последние 6 месяцев?», «Какие серверы достигнут лимита по дисковому пространству через месяц?», «Коррелирует ли рост ошибок 5xx с деплоями?». Для этих задач Prometheus подходит лучше.

Prometheus централизованно собирает метрики со всех серверов, хранит их годами и предоставляет PromQL - мощный язык запросов для аналитики. Вы можете написать запрос, который вычисляет прогноз заполнения диска на основе исторических данных, и настроить алерт, который сработает за неделю до прогнозируемого заполнения. Netdata не предоставляет такой гибкости.

Grafana, работающая поверх Prometheus, позволяет создавать кастомные дашборды под конкретные бизнес-метрики. Вы можете объединить данные из разных источников: системные метрики из Node Exporter, метрики Nginx из nginx-prometheus-exporter, бизнес-метрики из вашего приложения.

Важный момент: Netdata и Prometheus не исключают друг друга. Вы можете использовать Netdata как источник данных для Prometheus через встроенный экспорт метрик. В файле netdata.conf включите:

[prometheus:exporter]
    enabled = yes

После перезапуска Netdata начнет отдавать метрики в формате Prometheus на порту 19999 по пути /api/v1/allmetrics?format=prometheus. Добавьте этот эндпоинт как таргет в конфигурацию Prometheus, и вы получите тысячи метрик Netdata в централизованном хранилище Prometheus.

Для глубокого погружения в мониторинг дисковых метрик с Netdata и Prometheus изучите наше руководство по развертыванию Netdata + Grafana на базе Prometheus с настройкой прогнозирования заполнения разделов.

Интеграция Netdata с Docker и Nginx: практические примеры

Мониторинг Docker-контейнеров

При запуске с флагом --pid=host Netdata автоматически обнаруживает все запущенные Docker-контейнеры. В дашборде появляется группа «Docker containers» с детализацией по каждому контейнеру: потребление CPU, RAM, сетевой трафик, дисковые операции.

Для расширенного мониторинга с доступом к Docker API пробросьте сокет:

-v /var/run/docker.sock:/var/run/docker.sock:ro

Это даст Netdata доступ к названиям контейнеров, их меткам и дополнительным метрикам. Без сокета контейнеры идентифицируются по ID, что менее удобно для навигации.

Метрики контейнеров собираются через cgroups. Netdata читает файлы в /sys/fs/cgroup и строит графики для каждого контейнера. Это работает без дополнительной настройки и не требует установки агентов внутрь контейнеров.

Мониторинг Nginx

Netdata поставляется с плагином для сбора метрик Nginx через stub_status. Настройка занимает два шага.

Шаг 1: Включите stub_status в конфигурации Nginx. Добавьте в server-блок:

location /stub_status {
    stub_status;
    allow 127.0.0.1;
    deny all;
}

Перезагрузите Nginx:

nginx -t && nginx -s reload

Шаг 2: Настройте плагин Netdata. Внутри контейнера выполните:

cd /etc/netdata
./edit-config python.d/nginx.conf

Приведите конфигурацию к виду:

localhost:
  name: 'local'
  url: 'http://localhost/stub_status'

Перезапустите Netdata:

docker restart netdata

В дашборде появится секция «Nginx» с графиками активных соединений, количества запросов в секунду и распределения по HTTP-кодам ответов. Для более глубокого анализа логов Nginx и настройки алертинга на ошибки 502/504 используйте наше руководство по практическому мониторингу Nginx с готовыми конфигурациями Prometheus и Grafana.

Аналогично настраиваются плагины для MySQL, PostgreSQL, Redis, MongoDB и других популярных сервисов. Принцип везде один: включить сбор метрик на стороне сервиса, указать URL в конфигурации плагина Netdata, перезапустить агент.

Заключение: когда выбирать Netdata, а когда Prometheus

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

Prometheus - стандарт для масштабируемого долгосрочного мониторинга с централизованным хранением метрик, гибким языком запросов PromQL и богатой экосистемой экспортеров. Если у вас больше 10 серверов, вам нужны исторические данные за месяцы и кастомные дашборды в Grafana - выбирайте Prometheus.

Эти инструменты дополняют друг друга. Netdata можно развернуть как агент для сбора детальных метрик и экспортировать их в Prometheus для централизованного хранения и аналитики. В этом сценарии вы получаете преимущества обоих решений: глубина метрик Netdata и аналитические возможности Prometheus.

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

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

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