8.2.1 Настройка мониторинга ресурсов сервера с помощью Netdata

The Host netData Netdata – это бесплатное решение для мониторинга производительности и состояния системы с открытым исходным кодом, доступное для Linux, macOS и FreeBSD. Оно обеспечивает сбор метрик сервера в режиме реального времени и наглядно отображает их через веб-интерфейс. С помощью Netdata можно отслеживать ключевые показатели ресурсов VPS: использование оперативной памяти, загрузку процессора (CPU), сетевой трафик, использование дискового пространства и многое другое В этой статье рассматривается установка Netdata на примере Ubuntu 22.04 LTS, базовая настройка мониторинга основных ресурсов, а также настройка отправки уведомлений об алертах через Email и Telegram. В заключение приведён опциональный раздел о том, как подключить несколько серверов к Netdata Cloud для централизованного мониторинга.

Перед установкой необходимо убедиться, что:

Установка Netdata на Ubuntu

Устанавливать Netdata будем с репозитория Ubuntu.

  1. Обновляем систему и устанавливаем cURL..
sudo apt update
sudo apt install curl -y
  1. Запустите автоматический скрипт установки Netdata.

Официальный скрипт самостоятельно определит оптимальный способ установки и развернёт Netdata на системе.

sudo bash <(curl -SsL https://my-netdata.io/kickstart.sh)

Дождитесь завершения скрипта – он скачает все необходимые компоненты и запустит Netdata как службу. В выводе скрипта должно появиться сообщение об успешной установке Netdata. Скрипт также автоматически включит автообновление Netdata через cron (ежедневно).

  1. Убедитесь, что служба Netdata запущена.

После установки служба Netdata должна запуститься автоматически, проверить статус службы можно следующей командой:

sudo systemctl status netdata

Вы должны увидеть, что сервис netdata.service находится в состоянии active (running).

Если сервис не запущен, запустите его вручную:

sudo systemctl start netdata
Если Вы используете UFW

Откройте порт 19999. По умолчанию веб-интерфейс Netdata работает на порту 19999. Если в системе активирован фаервол (например, UFW), откройте этот порт для входящих подключений:

sudo ufw allow 19999/tcp

Удостоверьтесь, что правило применилось, и статус UFW активен

sudo ufw status

Если вы используете iptables напрямую

Добавить правило Вы можете следующей командой:

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

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

sudo apt install iptables-persistent
sudo netfilter-persistent save

Доступ к веб-интерфейсу Netdata

После успешной установки перейдите в веб-интерфейс Netdata для просмотра метрик: Откройте браузер (из любого места, имеющего доступ к VPS) и в адресной строке введите: http://<IP-адрес вашего сервера>:19999.

Например: http://123.45.67.89:19999 (замените на реальный IP вашего VPS). Если вы устанавливаете Netdata на локальную машину, можно использовать http://localhost:19999. TheHost Netdata login Отобразится панель мониторинга Netdata – интерактивный веб-интерфейс с обновляемыми каждую секунду графиками. Вы должны увидеть дашборд Netdata с перечнем системных метрик (пример интерфейса показан на скриншоте ниже).

Основные метрики мониторинга

В панели Netdata по умолчанию отображаются десятки метрик, структурированных по категориям. Ниже перечислены ключевые ресурсы VPS, мониторинг которых обеспечивает Netdata:

  • Процессор (CPU): загрузка CPU в реальном времени (в процентах по ядрам и суммарно), средняя загрузка (load average), количество выполняемых процессов и потоки CPU времени (user, system, iowait и т.д.). Эти показатели позволяют отследить, насколько загружен процессор и нет ли постоянного 100% использования.

  • Оперативная память (RAM): объём занятой и свободной памяти, кэша и буферов. Netdata показывает график использования RAM, что помогает заметить утечки памяти или нехватку памяти (например, если свободной памяти мало и система начинает активно использовать swap). Также отображаются метрики swap (файл подкачки), если он настроен.

  • Диск и файловая система: объём используемого и свободного дискового пространства на каждом разделе, а также производительность дисковой подсистемы – скорость чтения/записи (в байтах в секунду), количество операций ввода-вывода (IOPS). Отслеживая эти данные, можно увидеть, когда диск заполнен или когда происходят интенсивные операции ввода-вывода, влияющие на производительность. Netdata также может предупреждать о низком свободном месте на диске.

  • Сетевой трафик: статистика по сетевым интерфейсам – входящая и исходящая скорость (байт/с), количество пакетов, ошибки и отбрасывания пакетов. Это позволит контролировать нагрузку на сеть, обнаруживать аномально высокий трафик или проблемы с сетью.

  • Другие метрики: Netdata автоматически собирает множество дополнительных данных: нагрузку на систему (Load Average), время работы системы (uptime), использование CPU отдельными процессами, количество файловых дескрипторов, температуру CPU (если доступно), и т.д. Кроме того, Netdata имеет плагинную архитектуру и распознаёт многие сервисы (например, MySQL, Nginx, Docker и др.) – при их наличии на сервере в интерфейсе появятся соответствующие секции с их метриками. Для базового мониторинга VPS никакой дополнительной настройки не требуется – Netdata “из коробки” начинает отслеживать все ключевые показатели системы.

Каждый график в Netdata интерактивен: можно навести курсор для точных значений, перелистывать исторические данные, масштабировать временной диапазон. Обновление происходит в режиме реального времени, позволяя наблюдать мгновенную реакцию системы на нагрузку (например, резкий скачок нагрузки CPU при запуске задачи).

Настройка уведомлений

Уведомления по Email

Для отправки email-уведомлений Netdata использует локальный почтовый сервер (MTA). Это значит, что на вашем VPS должен быть настроен сервис отправки почты (например, Postfix или Sendmail). Если у вас ещё нет MTA, установите, к примеру, Postfix командой sudo apt install postfix -y и при первоначальной настройке выберите тип “Internet Site” (чтобы сервер мог отправлять почту напрямую). Убедитесь, что система способна отправлять письма наружу (например, командой echo "Test" | mail -s Test you@example.com при наличии утилиты mailx).

Далее сконфигурируем Netdata для email-уведомлений:

  1. Откройте файл конфигурации оповещений. Основные параметры уведомлений находятся в файле /etc/netdata/health_alarm_notify.conf. Откройте его от имени суперпользователя в текстовом редакторе
sudo nano /etc/netdata/health_alarm_notify.conf
  • Файл health_alarm_notify.conf используется скриптом оповещений Netdata. В нём задаются настройки для каждого способа уведомлений, а также получатели по ролям.
  1. Найдите секцию настроек email.

В файле присутствуют комментарии и примеры. Найдите блок, содержащий строки # email global notification options. В этом разделе отредактируйте или раскомментируйте следующие параметры:

# Email global notification options
SEND_EMAIL="YES"
DEFAULT_RECIPIENT_EMAIL="you@example.com"
EMAIL_SENDER="Netdata <netdata@your-domain>"
  • SEND_EMAIL=“YES”– включает отправку уведомлений по email.

  • DEFAULT_RECIPIENT_EMAIL– укажите адрес, на который будут приходить письма (замените you@example.com на ваш email);

  • EMAIL_SENDER– необязательно, задаёт адрес отправителя писем. По умолчанию отправителем будет [email protected] (или другой системный), но вы можете указать свой адрес/имя для удобства.

    Сохраните изменения в файле (в редакторе Nano нажмите Ctrl+O, Enter и Ctrl+X для выхода).

  1. Задайте получателей для ролей (опционально). Netdata группирует алерты по ролям (например, sysadmin, dbadmin и т.д. – они указаны в конфигурации каждого алерта). По умолчанию все основные системные алерты относятся к роли sysadmin. Если вы не настраивали ничего особенного, достаточно указать email по умолчанию, как сделано выше – тогда все алерты для sysadmin будут идти на DEFAULT_RECIPIENT_EMAIL. При необходимости вы можете задать разные адреса для разных ролей, отредактировав строки вида role_recipients_email[<роль>]=“…” в нижней части health_alarm_notify.conf (но для начала можно оставить как есть).
  2. Перезапустите Netdata. Чтобы новые настройки вступили в силу, перезапустите службу Netdata:
sudo systemctl restart netdata

Теперь Netdata при возникновении проблемы будет отправлять письмо на указанный адрес. Убедитесь, что письма не попадают в спам. По умолчанию Netdata настроена отправлять email при условии, что MTA на системе настроен корректно.

Пример:

Netdata начнёт посылать email-уведомление, если использование RAM на сервере превысит критический порог в ~90% в течение заданного времени, и аналогично для других ресурсов (CPU, диск и т.д.) – все эти пороги заданы в конфигурации по умолчанию. Вы получите письмо с темой, содержащей имя хоста и описание проблемы, а также детали метрики в теле например:

[Netdata] WARNING on myserver: system.ram – system memory utilization"

Совет: Чтобы самостоятельно протестировать отправку уведомлений, Netdata предоставляет скрипт alarm-notify.sh Вы можете запустить его вручную под пользователем netdata для проверки. Например, выполните:

sudo su -s /bin/bash netdata 
export NETDATA_ALARM_NOTIFY_DEBUG=1 
/usr/libexec/netdata/plugins.d/alarm-notify.sh test

Эта команда сгенерирует тестовые оповещения по всем включенным каналам (email, Telegram и др.) для роли sysadmin. Проверьте, пришло ли тестовое письмо.

Уведомления через Telegram

Отправка уведомлений в Telegram – удобный способ мгновенно получать оповещения на телефон или компьютер. Netdata умеет напрямую отправлять сообщения ботом Telegram. Для настройки потребуется выполнить несколько шагов:

Детальнее о том как разместить Telegram бот можете узнать в нашей статье.

  1. Создайте бота в Telegram и получите токен.

Откройте диалог с официальным ботом @BotFather в приложении Telegram. Отправьте команду /newbot и следуйте инструкциям – придумайте имя бота и его юзернейм. В итоге BotFather выдаст вам токен API для вашего бота (набор символов вида 123456789:ABCDEF…). Сохраните этот токен.

  1. Узнайте свой Chat ID в Telegram.

Если вы планируете получать уведомления лично в приватных сообщениях от бота, нужно узнать ваш идентификатор чата (числовой ID вашего аккаунта Telegram). Самый простой способ – написать боту @myidbot команду /getid– в ответ он сообщит ваш персональный ID. Если же вы хотите отправлять уведомления в групповой чат, добавьте своего бота в нужную группу и также узнайте ее ID (например, добавив бота @myidbot в группу и выполнив там /getgroupid). Идентификаторы групп обычно начинаются с -100….

Для простоты предположим, что вы отправляете уведомления себе лично – у вас есть ID пользователя (например, your_id).

  1. Отредактируйте конфигурацию уведомлений Netdata для Telegram.

Откройте файл /etc/netdata/health_alarm_notify.conf (как описано ранее) и найдите секцию настроек # telegram. Установите следующие параметры (раскомментируйте их, если нужно, и заполните значениями):

# Telegram global notification options
SEND_TELEGRAM="YES"
TELEGRAM_BOT_TOKEN="123456789:ABCDEF_your_bot_token_here"
DEFAULT_RECIPIENT_TELEGRAM="your_id"
  • SEND_TELEGRAM=“YES” – включаем отправку уведомлений через Telegram;
  • TELEGRAM_BOT_TOKEN – вставьте сюда токен вашего бота, полученный от BotFather. Важно: сохраняйте токен в тайне, как пароль;
  • DEFAULT_RECIPIENT_TELEGRAM – здесь укажите Chat ID получателя. Если вы отправляете себе, это ваш пользовательский ID (например, 123456789). Если бот должен писать в группу, укажите ID группы (например, -100987654321).

Сохраните изменения в файле конфигурации.

  1. Перезапустите службу Netdata: sudo systemctl restart netdata для применения новых настроек.
  2. Дайте старт боту (при необходимости). Если вы планируете получать сообщения в личку, достаточно просто отправить своему боту любое сообщение (например, /start), чтобы открыть с ним диалог. Для группы – убедитесь, что бот добавлен в группу.

После этого Netdata будет отправлять сообщения в Telegram при срабатывании алертов. Формат сообщений содержит уровень проблемы (WARNING/CRITICAL), имя хоста, имя метрики и текущее значение. Например, вы можете получить сообщение:

“Netdata [CRITICAL] myserver system.cpu в течение 1m: CPU Utilization = 95%” ]

Проверка и управление алертами

После настройки уведомлений имеет смысл ознакомиться с порогами срабатывания основных алертов. Все они описаны в файлах конфигурации в каталоге /etc/netdata/health.d/ (например, cpu.conf, ram.conf и т.д.). По умолчанию пороги выбраны консервативно – например, предупреждение по CPU срабатывает при загрузке >80% (критическое – >90%), по памяти – при использовании >90%, по месту на диске – при заполнении >90% и т.д. Вы можете при необходимости настроить эти пороги под свои требования, отредактировав соответствующие .conf файлы (либо через удобный GUI-конфигуратор алертов в самом Netdata Cloud).

Для временного отключения всех уведомлений (например, на время обслуживания сервера) можно воспользоваться “тихим режимом” (Silence): на веб-интерфейсе Netdata нажмите значок колокольчика и выберите время, на которое подавить алерты.

Информируем: Для получения дополнительной информации можете воспользоваться официальными ресурсами: