8.2.1 Настройка мониторинга ресурсов сервера с помощью Netdata
Netdata – это бесплатное решение для мониторинга производительности и состояния системы с открытым исходным кодом, доступное для Linux, macOS и FreeBSD. Оно обеспечивает сбор метрик сервера в режиме реального времени и наглядно отображает их через веб-интерфейс. С помощью Netdata можно отслеживать ключевые показатели ресурсов VPS: использование оперативной памяти, загрузку процессора (CPU), сетевой трафик, использование дискового пространства и многое другое В этой статье рассматривается установка Netdata на примере Ubuntu 22.04 LTS, базовая настройка мониторинга основных ресурсов, а также настройка отправки уведомлений об алертах через Email и Telegram. В заключение приведён опциональный раздел о том, как подключить несколько серверов к Netdata Cloud для централизованного мониторинга.
Перед установкой необходимо убедиться, что:
- заказан вирутальный или выделенный сервер;
- наличие sudo или root-доступа;
- установлена версия не меньше *Ubuntu 22.04
Установка Netdata на Ubuntu
Устанавливать Netdata будем с репозитория Ubuntu.
- Обновляем систему и устанавливаем cURL..
sudo apt update
sudo apt install curl -y
- Запустите автоматический скрипт установки Netdata.
Официальный скрипт самостоятельно определит оптимальный способ установки и развернёт Netdata на системе.
sudo bash <(curl -SsL https://my-netdata.io/kickstart.sh)
Дождитесь завершения скрипта – он скачает все необходимые компоненты и запустит Netdata как службу. В выводе скрипта должно появиться сообщение об успешной установке Netdata. Скрипт также автоматически включит автообновление Netdata через cron (ежедневно).
- Убедитесь, что служба 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
.
Отобразится панель мониторинга 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-уведомлений:
- Откройте файл конфигурации оповещений.
Основные параметры уведомлений находятся в файле
/etc/netdata/health_alarm_notify.conf.
Откройте его от имени суперпользователя в текстовом редакторе
sudo nano /etc/netdata/health_alarm_notify.conf
- Файл
health_alarm_notify.conf
используется скриптом оповещений Netdata. В нём задаются настройки для каждого способа уведомлений, а также получатели по ролям.
- Найдите секцию настроек 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 для выхода).
- Задайте получателей для ролей (опционально). Netdata группирует алерты по ролям (например,
sysadmin
,dbadmin
и т.д. – они указаны в конфигурации каждого алерта). По умолчанию все основные системные алерты относятся к ролиsysadmin
. Если вы не настраивали ничего особенного, достаточно указать email по умолчанию, как сделано выше – тогда все алерты дляsysadmin
будут идти на DEFAULT_RECIPIENT_EMAIL. При необходимости вы можете задать разные адреса для разных ролей, отредактировав строки вида role_recipients_email[<роль>]=“…” в нижней частиhealth_alarm_notify.conf
(но для начала можно оставить как есть). - Перезапустите 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 бот можете узнать в нашей статье.
- Создайте бота в Telegram и получите токен.
Откройте диалог с официальным ботом @BotFather
в приложении Telegram. Отправьте команду /newbot
и следуйте инструкциям – придумайте имя бота и его юзернейм. В итоге BotFather
выдаст вам токен API
для вашего бота (набор символов вида 123456789:ABCDEF…). Сохраните этот токен.
- Узнайте свой Chat ID в Telegram.
Если вы планируете получать уведомления лично в приватных сообщениях от бота, нужно узнать ваш идентификатор чата (числовой ID вашего аккаунта Telegram). Самый простой способ – написать боту @myidbot команду /getid
– в ответ он сообщит ваш персональный ID. Если же вы хотите отправлять уведомления в групповой чат, добавьте своего бота в нужную группу и также узнайте ее ID (например, добавив бота @myidbot
в группу и выполнив там /getgroupid
). Идентификаторы групп обычно начинаются с -100….
Для простоты предположим, что вы отправляете уведомления себе лично – у вас есть ID пользователя (например, your_id).
- Отредактируйте конфигурацию уведомлений 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).
Сохраните изменения в файле конфигурации.
- Перезапустите службу Netdata:
sudo systemctl restart netdata
для применения новых настроек. - Дайте старт боту (при необходимости). Если вы планируете получать сообщения в личку, достаточно просто отправить своему боту любое сообщение (например,
/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 нажмите значок колокольчика и выберите время, на которое подавить алерты.
Информируем: Для получения дополнительной информации можете воспользоваться официальными ресурсами: