Чому варто обрати Prometheus та Grafana для моніторингу на Bare Metal?
Моніторинг є критично важливим для будь-якої серверної інфраструктури, особливо для виділених або bare metal серверів, де продуктивність та безперебійна робота є першочерговими. Prometheus — це система моніторингу з відкритим вихідним кодом, яка збирає метрики з налаштованих цілей через задані інтервали, оцінює вирази правил, відображає результати та може запускати сповіщення, якщо певна умова виявляється істинною. Grafana, з іншого боку, — це веб-додаток для аналітики та інтерактивної візуалізації з відкритим вихідним кодом, який підключається до різних джерел даних, включаючи Prometheus, для створення потужних, настроюваних дашбордів.
Вибір bare metal сервера від Valebyte для вашого стеку моніторингу пропонує значні переваги:
- Виділені ресурси: Відсутність конкуренції за ресурси, що гарантує, що ваша система моніторингу завжди матиме необхідні CPU, RAM та I/O, навіть під високим навантаженням.
- Продуктивність: Вища продуктивність дискового I/O (особливо з NVMe SSD) для ефективного зберігання та запитів великих обсягів часових рядів даних.
- Ізоляція: Повний контроль над середовищем, що підвищує безпеку та стабільність критичної інфраструктури моніторингу.
- Масштабованість: Легше оновлювати апаратні компоненти безпосередньо зі зростанням ваших потреб у моніторингу.
Для невеликих розгортань, таких як моніторинг однієї програми або кількох особистих сервісів, високопродуктивний Valebyte VPS може слугувати чудовою, економічно ефективною платформою для Prometheus та Grafana. Однак, для моніторингу кількох виробничих серверів, зберігання великих обсягів історичних даних або обробки високої частоти збору даних, виділений сервер Valebyte є рекомендованим вибором завдяки його вищій, стабільній продуктивності.
Передумови та мінімальні вимоги до сервера
Перш ніж почати, переконайтеся, що у вас є:
- Bare metal сервер або надійний VPS під керуванням Ubuntu 22.04 LTS (цей посібник використовує Ubuntu).
- Права root або sudo на сервері.
- Базове знайомство з командним рядком Linux.
- Підключення до Інтернету для завантаження пакетів.
Мінімальні апаратні характеристики для сервера моніторингу:
- CPU: 2 vCPU / 2 ядра (наприклад, Intel Xeon E3-12xx або краще)
- RAM: 4 ГБ
- Диск: 50 ГБ NVMe SSD (для оптимальної продуктивності та збереження даних)
- Пропускна здатність: 100 Мбіт/с (безлімітна або з великим місячним лімітом)
Покроковий посібник: Налаштування Prometheus та Grafana
Виконайте ці кроки для розгортання Prometheus та Grafana на вашому сервері Valebyte.
1. Підготовка сервера
Оновіть список пакетів вашої системи та оновіть наявні пакети. Встановіть необхідні утиліти, такі як wget та curl, якщо вони ще не встановлені.
sudo apt update && sudo apt upgrade -y
sudo apt install -y wget curl libfontconfig1
Створіть виділених системних користувачів для Prometheus та Node Exporter для безпеки.
sudo useradd --no-create-home --shell /bin/false prometheus
sudo useradd --no-create-home --shell /bin/false node_exporter
2. Встановлення Prometheus
Завантажте останню стабільну версію Prometheus. Перевірте сторінку завантаження Prometheus для отримання найактуальнішої версії. На момент написання цього посібника стабільною є версія 2.49.1.
wget https://github.com/prometheus/prometheus/releases/download/v2.49.1/prometheus-2.49.1.linux-amd64.tar.gz
tar -xvf prometheus-2.49.1.linux-amd64.tar.gz
sudo mv prometheus-2.49.1.linux-amd64 /usr/local/prometheus
Створіть каталоги для конфігурації та даних Prometheus і встановіть відповідні дозволи.
sudo mkdir /etc/prometheus
sudo mv /usr/local/prometheus/prometheus.yml /etc/prometheus/
sudo mv /usr/local/prometheus/promtool /usr/local/bin/
sudo mv /usr/local/prometheus/prometheus /usr/local/bin/
sudo chown -R prometheus:prometheus /etc/prometheus
sudo chown -R prometheus:prometheus /usr/local/prometheus
sudo mkdir /var/lib/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus
Відредагуйте файл конфігурації Prometheus /etc/prometheus/prometheus.yml. Для базового налаштування конфігурації за замовчуванням часто достатньо, але пізніше ми додамо ціль збору даних для Node Exporter. Наразі переконайтеся, що він виглядає приблизно так:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
Створіть файл служби systemd для Prometheus, щоб керувати його життєвим циклом.
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 \
--web.listen-address=0.0.0.0:9090
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
Перезавантажте systemd, увімкніть та запустіть Prometheus.
sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus
sudo systemctl status prometheus
Перевірте, чи працює Prometheus, перейшовши за адресою http://YOUR_SERVER_IP:9090 у вашому веб-браузері. Ви повинні побачити інтерфейс Prometheus.
3. Встановлення Node Exporter
Node Exporter — це експортер Prometheus для метрик апаратного забезпечення та ОС. Завантажте останню стабільну версію. Перевірте сторінку завантаження Prometheus для отримання найактуальнішої версії. На момент написання цього посібника стабільною є версія 1.7.0.
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar -xvf node_exporter-1.7.0.linux-amd64.tar.gz
sudo mv node_exporter-1.7.0.linux-amd64 /usr/local/node_exporter
Перемістіть виконуваний файл та встановіть дозволи.
sudo mv /usr/local/node_exporter/node_exporter /usr/local/bin/
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
Створіть файл служби systemd для Node Exporter.
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
Restart=on-failure
[Install]
WantedBy=multi-user.target
Перезавантажте systemd, увімкніть та запустіть Node Exporter.
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter
sudo systemctl status node_exporter
Перевірте, чи працює Node Exporter, перейшовши за адресою http://YOUR_SERVER_IP:9100/metrics. Ви повинні побачити сторінку з різними системними метриками.
4. Налаштування Prometheus для збору даних з Node Exporter
Відредагуйте файл конфігурації Prometheus /etc/prometheus/prometheus.yml, щоб додати Node Exporter як ціль.
sudo nano /etc/prometheus/prometheus.yml
Додайте наступну конфігурацію збору даних у розділ scrape_configs::
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']
Ваш prometheus.yml тепер повинен виглядати так:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']
Перезавантажте Prometheus, щоб застосувати нову конфігурацію.
sudo systemctl reload prometheus
Перейдіть до інтерфейсу Prometheus (http://YOUR_SERVER_IP:9090), перейдіть до 'Status' -> 'Targets'. Ви повинні побачити цілі 'prometheus' та 'node_exporter' зі статусом 'UP'.
5. Встановлення Grafana
Додайте ключ GPG та репозиторій Grafana до вашої системи.
sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
Оновіть список пакетів та встановіть Grafana.
sudo apt update
sudo apt install -y grafana
Увімкніть та запустіть Grafana.
sudo systemctl enable grafana-server
sudo systemctl start grafana-server
sudo systemctl status grafana-server
Перевірте, чи працює Grafana, перейшовши за адресою http://YOUR_SERVER_IP:3000. Логін за замовчуванням: admin / admin. Вам буде запропоновано негайно змінити пароль.
6. Налаштування брандмауера (UFW)
Якщо ви використовуєте UFW (Uncomplicated Firewall), дозвольте доступ до портів Prometheus та Grafana.
sudo ufw allow 9090/tcp comment 'Дозволити Prometheus'
sudo ufw allow 9999/tcp comment 'Дозволити Prometheus Alertmanager' # Якщо ви плануєте використовувати Alertmanager
sudo ufw allow 9100/tcp comment 'Дозволити Node Exporter'
sudo ufw allow 3000/tcp comment 'Дозволити Grafana'
sudo ufw enable
sudo ufw status
7. Додавання Prometheus як джерела даних у Grafana
Увійдіть до Grafana (http://YOUR_SERVER_IP:3000, за замовчуванням admin/admin, змініть пароль). Натисніть на іконку шестерні (Configuration) -> 'Data Sources' -> 'Add data source'. Виберіть 'Prometheus'.
- Ім'я:
Prometheus(або будь-яка описова назва) - URL:
http://localhost:9090 - Натисніть 'Save & test'. Ви повинні побачити 'Data source is working'.
8. Імпорт дашборда Grafana
Щоб візуалізувати метрики вашого сервера, імпортуйте попередньо створений дашборд. Популярним вибором для Node Exporter є 'Node Exporter Full' (ID дашборда: 1860).
- У Grafana натисніть іконку '+' -> 'Import'.
- Введіть
1860у поле 'Import via grafana.com dashboard' та натисніть 'Load'. - Виберіть своє джерело даних 'Prometheus' зі спадного списку.
- Натисніть 'Import'.
Тепер ви повинні побачити комплексний дашборд, що відображає метрики з вашого Node Exporter.
Масштабування вашої інфраструктури моніторингу
Зі зростанням вашої інфраструктури зростатимуть і вимоги до вашого сервера моніторингу. Наступна таблиця надає рекомендації щодо апаратних характеристик для різних масштабів моніторингу.
Вибір bare metal сервера від Valebyte забезпечує гнучкість для точного відповідності цим специфікаціям, гарантуючи оптимальну роботу вашого стеку моніторингу без вузьких місць у ресурсах.
| Сервери/кінцеві точки, що моніторяться | vCPU / Ядра | RAM | Диск (Тип + ГБ) | Місячна пропускна здатність |
|---|---|---|---|---|
| 1-5 (Малий - VPS/Виділений) | 2 vCPU / 2 ядра | 4 ГБ | 50 ГБ NVMe SSD | 100 Мбіт/с (5 ТБ) |
| 5-20 (Середній - Виділений) | 4 ядра | 8-16 ГБ | 250 ГБ NVMe SSD | 250 Мбіт/с (10 ТБ) | 20-50+ (Великий - Виділений) | 8+ ядер | 32-64 ГБ | 500 ГБ+ NVMe SSD | 500 Мбіт/с - 1 Гбіт/с (Безлімітний) |
Вирішення поширених проблем
- Служба не запускається: Перевірте логи за допомогою
sudo journalctl -u prometheus.serviceабоsudo journalctl -u grafana-server.serviceна наявність помилок. - Prometheus не збирає дані з цілей: Перевірте синтаксис
prometheus.yml(використовуйтеpromtool check config /etc/prometheus/prometheus.yml) та переконайтеся, що цільові служби (наприклад, Node Exporter) працюють і доступні на вказаному порту. Перевірте 'Status -> Targets' в інтерфейсі Prometheus. - Grafana не відображає дані: Переконайтеся, що URL-адреса джерела даних Prometheus правильна (
http://localhost:9090з точки зору Grafana на тому ж сервері) і що Prometheus працює та збирає дані. Перевірте логи Grafana на наявність помилок джерела даних. - Брандмауер блокує доступ: Двічі перевірте правила UFW або інші конфігурації брандмауера, щоб переконатися, що порти 9090 (Prometheus), 9100 (Node Exporter) та 3000 (Grafana) відкриті.
Варіанти використання вашого стеку моніторингу
Правильно налаштований Prometheus та Grafana є безцінними для широкого спектру застосувань:
- Веб-хостинг: Моніторинг навантаження на сервер, частоти HTTP-запитів, часу відгуку та продуктивності баз даних для Nginx, Apache, MySQL, PostgreSQL.
- Ігрові сервери: Відстеження використання CPU, споживання RAM, затримки мережі та кількості гравців для забезпечення плавного ігрового досвіду.
- Бази даних: Збір метрик продуктивності запитів, кількості з'єднань, дискового I/O та статусу реплікації для критично важливих сховищ даних.
- Поштові сервери: Спостереження за розмірами черг, швидкістю доставки повідомлень та використанням ресурсів для Postfix, Dovecot та інших поштових служб.
- Стрімінгові сервіси: Спостереження за використанням пропускної здатності, одночасними потоками та станом сервера для запобігання перебоям.
- CI/CD конвеєри: Відстеження часу збірки, виконання тестів та споживання ресурсів Jenkins, GitLab CI або інших інструментів автоматизації.
- Самостійно розміщені програми: Отримайте уявлення про продуктивність особистих хмар (Nextcloud), медіасерверів (Plex), VPN (OpenVPN, WireGuard) та інших самостійно розміщених інструментів.