Мониторинг сервера с Netdata: установка и как читать метрики

Netdata — мониторинг сервера с графиками «здесь и сейчас»: CPU, RAM, диски, сеть, процессы, часто еще БД и веб-сервер. Ставится быстро, жрет мало ресурсов относительно пользы, удобен когда нужно понять, что именно упирается в лимит, а не смотреть сухие цифры раз в пять минут.

Что делает Netdata

Агент собирает метрики с системы (и плагинов/коллекторов), рисует дашборд в браузере и может слать алерты. По умолчанию интерфейс слушает порт 19999. Данные в реальном времени: пики нагрузки, iowait, swap, сетевые всплески, «кто съел CPU» — видно без ручного top/htop в каждой сессии.

Типичные сценарии:

  • разобраться, почему сайт тормозит в конкретный час
  • увидеть утечку памяти или раздувшийся процесс
  • проверить диск: заполнение, latency, перегрузка
  • наблюдать сеть: bandwidth, errors, connections
  • держать health-алерты на критичные метрики

Установка

Официальный и самый простой путь — kickstart-скрипт. Пакеты из apt/yum часто отстают, поэтому для актуальной версии предпочтительнее способ с сайта проекта.

wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh
sh /tmp/netdata-kickstart.sh

Скрипт поставит зависимости, агент и systemd-сервис. После установки проверьте статус:

sudo systemctl status netdata
# или
curl -I http://127.0.0.1:19999/

На Ubuntu/Debian иногда доступен пакет netdata через apt — для быстрого теста сойдет, но для продакшена удобнее kickstart или репозиторий Netdata, чтобы получать обновления вовремя.

Доступ к дашборду

Локально: http://127.0.0.1:19999/. С другого хоста: http://IP_СЕРВЕРА:19999/только если порт открыт осознанно.

На публичном VPS не оставляйте 19999 открытым всему интернету без защиты. Нормальные варианты:

  • SSH-туннель: ssh -L 19999:127.0.0.1:19999 user@server, затем браузер на localhost:19999
  • Nginx/Caddy reverse proxy с basic auth или SSO + HTTPS
  • файрвол: разрешить порт только с вашего IP

В конфиге можно ограничить bind на localhost. Основной файл обычно:

sudo nano /etc/netdata/netdata.conf
# после правок
sudo systemctl restart netdata

Если файла почти нет, сгенерируйте полный пример:

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

Что смотреть в первую очередь

CPU и память

На дашборде — system overview: user/system/iowait, load, RAM, free, cached, swap. Если CPU в user/system — ищите процесс. Если высокий iowait — узкое место часто диск, а не «мало ядер». Swap, который постоянно thrashing, — сигнал нехватки RAM или утечки.

Сеть

Интерфейсы: входящий/исходящий трафик, drops, errors. Всплески на eth0/ens* при DDoS, бэкапе или кривом клиенте видны сразу. Сокеты и connections помогают поймать исчерпание лимитов (слишком много ESTABLISHED/TIME_WAIT).

Диски

Заполнение разделов, I/O, latency. Забитый / или /var валит сервисы (логи, БД, Docker). Высокая latency на диске объясняет «медленный сайт» даже при свободном CPU.

Процессы и сервисы

Раздел apps/processes показывает, кто жрет CPU/RAM. Удобно ловить php-fpm workers, mysqld, node, java после деплоя. Если коллекторы включены, можно смотреть и метрики приложений (Nginx, MySQL и т.д.) — зависит от установленных плагинов.

Алерты (health)

Netdata идет с набором health-чеков: диск почти полный, load, OOM-риски и прочее. Правила лежат в health.d; правки — через edit-config, чтобы не потерять их при обновлении:

cd /etc/netdata
sudo ./edit-config health.d/cpu.conf
# пример пути - имена файлов смотрите в health.d/

Уведомления (email, Slack, Telegram и др.) настраиваются в health_alarm_notify.conf. Для начала достаточно дашборда; алерты подключайте, когда уже понятно, какие пороги вам реально важны (иначе будет шум).

Как это помогает «ускорить» сервер

Netdata сам по себе не ускоряет машину — он показывает узкие места. Дальше действия по фактам:

  • высокий CPU одного процесса → профилирование, кэш, лимиты php-fpm/workers
  • мало RAM / swap thrash → уменьшить workers, кэш объектов, апгрейд RAM
  • iowait / disk latency → SSD, разнести логи и БД, тюнинг БД, меньше random write
  • сеть в потолок → CDN, сжатие, rate limit, поиск аномального клиента
  • диск 95%+ → ротация логов, чистка бэкапов, enlarge volume

Быстрый чеклист после установки

  1. Агент в systemd, порт 19999 отвечает локально
  2. Доступ снаружи закрыт или защищен (туннель/proxy/IP allowlist)
  3. Просмотрели CPU, RAM, disk, network в спокойный час — запомнили «норму»
  4. При инциденте сравнили пики с процессами
  5. По желанию: health notify в мессенджер/почту

Для одного VPS или пары серверов Netdata часто хватает без тяжелого стека Prometheus+Grafana. Если метрик и команд станет много — данные Netdata можно экспортировать дальше, но для повседневной диагностики дашборда агента обычно достаточно.

Источники и ссылки


Комментарии загружаются…