В цій статті ми розглянемо, як налаштувати моніторинг VPS або виліленного сервера сервера через Grafana, Prometheus, Node Exporter та Grafana на операційних системах Debian, Ubuntu та AlmaLinux.
Навіщо потрібен цей стек
Три інструменти — Prometheus, Node Exporter і Grafana — разом закривають практично всю базову потребу в моніторингу сервера, і кожен з них відповідає за свою частину роботи:
- Node Exporter збирає сирі метрики безпосередньо з ядра Linux (CPU, пам’ять, диски, мережа) і віддає їх у форматі, зрозумілому Prometheus.
- Prometheus періодично опитує (scrape) Node Exporter, зберігає історію значень у власній базі часових рядів і вміє сам піднімати тривогу, якщо щось вийшло за межі норми.
- Grafana перетворює всі ці цифри на графіки й дашборди, з якими реально зручно працювати щодня, а не вручну гортати консольний вивід.
Ставити їх варто саме в такому порядку — спершу джерело даних (Node Exporter), потім збирач (Prometheus), і тільки в кінці візуалізацію (Grafana), бо без перших двох показувати в Grafana буде просто нічого.
З чого складається стек моніторингу
| Компонент | Порт за замовчуванням | Роль |
|---|---|---|
| Node Exporter | 9100 | Віддає метрики ОС конкретного сервера |
| Prometheus | 9090 | Збирає, зберігає та опитує метрики |
| Grafana | 3000 | Візуалізує дані, будує дашборди й алерти |
Що має бути готово заздалегідь
- VPS з Debian 10/11/12, Ubuntu 20.04/22.04/24.04 або AlmaLinux 8/9
- Доступ sudo або root
- Мінімум 1 ГБ оперативної пам’яті (для Prometheus з великою кількістю метрик та тривалою історією знадобиться більше)
Prometheus і Node Exporter поширюються офіційно у вигляді самодостатнього бінарного файлу з GitHub Releases — без залежності від пакетних менеджерів дистрибутива. Завдяки цьому кроки встановлення цих двох компонентів однакові для Debian, Ubuntu та AlmaLinux, відрізняються лише команди встановлення базових утиліт (wget, tar).
Встановлення Prometheus
Крок 1. Встановлення базових утиліт
Debian / Ubuntu:
sudo apt update
sudo apt install -y wget tar nano
AlmaLinux:
sudo dnf install -y wget tar nano
Крок 2. Створення окремого системного користувача
Запускати Prometheus від root — погана практика. Створіть окремого користувача без прав входу в систему:
sudo useradd --no-create-home --shell /usr/sbin/nologin prometheus
Крок 3. Завантаження та встановлення бінарника
cd /tmp
wget https://github.com/prometheus/prometheus/releases/download/v3.13.1/prometheus-3.13.1.linux-amd64.tar.gz
tar -xzf prometheus-3.13.1.linux-amd64.tar.gz
cd prometheus-3.13.1.linux-amd64
sudo mv prometheus /usr/local/bin/
sudo mv promtool /usr/local/bin/
sudo chown prometheus:prometheus /usr/local/bin/prometheus /usr/local/bin/promtool
Крок 4. Каталоги для конфігурації та даних
sudo mkdir -p /etc/prometheus /var/lib/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus
Крок 5. Базовий конфігураційний файл
sudo nano /etc/prometheus/prometheus.yml
Мінімальний робочий конфіг (ціль для Node Exporter додамо трохи пізніше, коли він вже буде встановлений):
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml
Крок 6. Служба systemd
sudo nano /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus/ \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries
[Install]
WantedBy=multi-user.target
Запустіть і додайте в автозавантаження:
sudo systemctl daemon-reload
sudo systemctl enable --now prometheus
sudo systemctl status prometheus
Крок 7. Обмеження доступу до порту 9090
localhost і цей крок можна пропуститиDebian / Ubuntu (UFW):
sudo ufw allow from ІР_АДРЕСА_ДОВІРЕНОГО_СЕРВЕРА to any port 9090
AlmaLinux (firewalld):
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="ІР_АДРЕСА_ДОВІРЕНОГО_СЕРВЕРА" port protocol="tcp" port="9090" accept'
sudo firewall-cmd --reload
Встановлення Node Exporter
Node Exporter встановлюється на кожен сервер, метрики якого хочете бачити в Prometheus. Якщо у вас кілька VPS — цей розділ повторюється на кожному з них, тоді як Prometheus і Grafana зазвичай достатньо мати в одному екземплярі.
Крок 1. Створення користувача
sudo useradd --no-create-home --shell /usr/sbin/nologin node_exporter
Крок 2. Завантаження бінарника
cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v1.12.1/node_exporter-1.12.1.linux-amd64.tar.gz
tar -xzf node_exporter-1.12.1.linux-amd64.tar.gz
sudo mv node_exporter-1.12.1.linux-amd64/node_exporter /usr/local/bin/
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
Крок 3. Служба systemd
sudo nano /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter
sudo systemctl status node_exporter
Перевірте, що метрики віддаються коректно:
curl http://localhost:9100/metrics
Якщо у відповіді бачите потік рядків формату node_cpu_seconds_total{...} — Node Exporter працює правильно.
Крок 4. Обмеження доступу до порту 9100
localhost і цей крок можна пропуститиDebian / Ubuntu (UFW):
sudo ufw allow from ІР_АДРЕСА_СЕРВЕРА_З_PROMETHEUS to any port 9100
AlmaLinux (firewalld):
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="ІР_АДРЕСА_СЕРВЕРА_З_PROMETHEUS" port protocol="tcp" port="9100" accept'
sudo firewall-cmd --reload
Підключення Node Exporter до Prometheus
Поверніться на сервер із Prometheus і відредагуйте конфіг, додавши ціль для опитування:
sudo nano /etc/prometheus/prometheus.ymlscrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node_exporter' static_configs: - targets: ['ІР_АДРЕСА_СЕРВЕРА_З_NODE_EXPORTER:9100']
Якщо Node Exporter стоїть на тому самому сервері, що й Prometheus, вкажіть localhost:9100.
Перезапустіть Prometheus:
sudo systemctl restart prometheus
Перевірити, що ціль підключена й опитується без помилок, можна у веб-інтерфейсі самого Prometheus: відкрийте http://IP_СЕРВЕРА:9090/targets — статус node_exporter має бути UP.
Встановлення Grafana на Debian та Ubuntu
Офіційний APT-репозиторій Grafana Labs єдиний для обох дистрибутивів — команди нижче спрацюють без змін як на Debian 10/11/12, так і на Ubuntu 20.04/22.04/24.04.
Крок 1. Підключення офіційного репозиторію
sudo apt update
sudo apt install -y apt-transport-https software-properties-common wget
sudo mkdir -p /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/grafana.asc https://apt.grafana.com/gpg.key
sudo chmod 644 /etc/apt/keyrings/grafana.asc
echo "deb [signed-by=/etc/apt/keyrings/grafana.asc] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
Крок 2. Встановлення пакета
sudo apt update
sudo apt install -y grafana
Встановлення Grafana на AlmaLinux
Крок 1. Імпорт GPG-ключа та підключення репозиторію
sudo dnf install -y wget
wget -q -O gpg.key https://rpm.grafana.com/gpg.key
sudo rpm --import gpg.key
sudo tee /etc/yum.repos.d/grafana.repo > /dev/null <<EOF
[grafana]
name=grafana
baseurl=https://rpm.grafana.com
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://rpm.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
EOF
Крок 2. Встановлення пакета
sudo dnf install -y grafana
Запуск служби Grafana
Незалежно від дистрибутива, служба запускається однаково:
sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo systemctl status grafana-server
Відкориваємо порт 3000 для доступу зовні:
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --reload
Вхід у веб-інтерфейс Grafana
За замовчуванням Grafana слухає порт 3000. Відкрийте в браузері:
http://IP_ВАШОГО_СЕРВЕРА:3000
Стандартні дані для першого входу:
- Логін:
admin - Пароль:
admin
Одразу після першого входу система попросить встановити новий пароль.
Підключення Prometheus як джерела даних
- У лівому меню відкрийте розділ Connections → Data sources.
- Натисніть Add data source.
- Виберіть Prometheus.
- У полі URL вкажіть адресу вашого Prometheus, наприклад:
http://localhost:9090Якщо Prometheus працює на іншому сервері — замініть
localhostна його реальну адресу. - Натисніть Save & test і переконайтесь, що з’явилось повідомлення про успішне підключення.
Готовий дашборд для Node Exporter
Не обов’язково збирати дашборд з нуля — спільнота Grafana вже підготувала готовий шаблон саме під Node Exporter.
- У лівому меню натисніть “+” → Import.
- У полі ID дашборду введіть 1860 — це офіційний ID популярного шаблону “Node Exporter Full”.
- Натисніть Load.
- Оберіть щойно підключене джерело Prometheus.
- Натисніть Import.
За кілька секунд отримаєте готовий дашборд із завантаженням CPU, пам’яті, дисків, мережевого трафіку та десятками інших метрик сервера — без ручного налаштування жодної панелі.
Далі має сенс додати правила алертів на критичні значення (заповнення диска понад 90%, стрибок навантаження CPU, брак вільної пам’яті) і, якщо серверів кілька, повторити встановлення Node Exporter на кожному з них, просто додаючи нові цілі у prometheus.yml. Якщо плануєте тримати такий стек на постійній основі — варто одразу закладатись на VPS з достатнім запасом ресурсів, оскільки Prometheus з часом накопичує чимало історичних даних, і диск під них краще брати з запасом.
