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 натисніть значок дзвіночка і виберіть час, на який подавити алерти.
Інформуємо: Для отримання додаткової інформації можете скористатися офіційними ресурсами: