Чому моніторинг виділеного сервера має значення
Виділені сервери від Valebyte пропонують неперевершену продуктивність, безпеку та можливості налаштування. Однак, з великою потужністю приходить і потреба в проактивному управлінні. Без надійного моніторингу ви працюєте наосліп, вразливі до несподіваних збоїв, вузьких місць у продуктивності та вичерпання ресурсів. Аналітика в реальному часі щодо вашого CPU, пам'яті, дискового I/O, мережевого трафіку та метрик додатків є критично важливою для:
- Запобігання простоям: Виявляйте та вирішуйте проблеми до того, як вони переростуть у перебої в роботі сервісів.
- Оптимізація продуктивності: Визначайте ресурсоємні процеси та вузькі місця, щоб ваші додатки працювали з максимальною ефективністю.
- Планування потужностей: Розумійте тенденції використання ресурсів, щоб приймати обґрунтовані рішення щодо масштабування вашої інфраструктури.
- Вирішення проблем: Швидко діагностуйте першопричину проблем за допомогою історичних даних та детальних метрик.
- Безпека: Відстежуйте незвичайну активність або стрибки ресурсів, які можуть свідчити про порушення безпеки.
Незалежно від того, чи запускаєте ви високонавантажені веб-додатки, вимогливий ігровий сервер, складні бази даних, потокові сервіси або CI/CD конвеєри, добре реалізоване рішення для моніторингу є вашою першою лінією захисту та ключем до операційної досконалості.
Розуміння Prometheus та Grafana
Prometheus та Grafana утворюють потужний, відкритий стек моніторингу, який став галузевим стандартом. Вони ідеально доповнюють один одного: Prometheus займається збором та зберіганням даних, а Grafana надає рівень візуалізації.
Prometheus: Збирач метрик
Prometheus – це інструментарій для моніторингу та оповіщення систем з відкритим вихідним кодом, спочатку розроблений у SoundCloud. Він розроблений для надійності та масштабованості, що робить його ідеальним для bare metal середовищ. Ключові особливості включають:
- Багатовимірна модель даних: Дані часових рядів ідентифікуються за назвою метрики та парами ключ/значення.
- Гнучка мова запитів (PromQL): Дозволяє потужно та точно запитувати зібрані метрики.
- Модель витягування (Pull Model): Prometheus активно збирає метрики з налаштованих цілей через задані інтервали.
- Виявлення сервісів (Service Discovery): Інтегрується з різними механізмами для автоматичного виявлення нових цілей.
- Оповіщення: Інтегрується з Alertmanager для обробки сповіщень на основі виразів PromQL.
Для bare metal моніторингу Prometheus зазвичай збирає метрики з 'експортерів'. Найпоширенішим експортером для метрик на рівні хоста є Node Exporter.
Grafana: Потужний інструмент візуалізації
Grafana – це веб-додаток для аналітики та інтерактивної візуалізації з відкритим вихідним кодом. Він підключається до різних джерел даних, включаючи Prometheus, для створення красивих та інформативних дашбордів. За допомогою Grafana ви можете:
- Створювати динамічні дашборди: Створюйте високоіндивідуальні дашборди з різними типами панелей (графіки, окремі показники, таблиці, теплові карти тощо).
- Досліджувати дані: Заглиблюйтесь у метрики за допомогою потужних конструкторів запитів.
- Налаштовувати сповіщення: Налаштовуйте сповіщення безпосередньо з ваших дашбордів на основі порогових значень метрик.
- Співпрацювати: Діліться дашбордами та дозволяйте членам команди переглядати або редагувати їх.
Передумови для моніторингу Bare Metal
Перш ніж зануритися в установку, переконайтеся, що у вас є наступне:
- Виділений сервер від Valebyte: З root або sudo привілеями. Цей посібник передбачає сервер Ubuntu 22.04 LTS, але кроки в основному схожі для інших дистрибутивів на базі Debian.
- Базові знання командного рядка Linux: Знайомство з командами, такими як
cd,mkdir,cp,wget,tar,systemctl. - Підключення до Інтернету: Для завантаження необхідних пакетів та бінарних файлів.
- Налаштування брандмауера: Вам потрібно буде відкрити певні порти. Ми будемо використовувати UFW (Uncomplicated Firewall) як приклад.
- Необхідні порти:
- Prometheus: Порт за замовчуванням
9090(для веб-інтерфейсу) - Node Exporter: Порт за замовчуванням
9100(для метрик) - Grafana: Порт за замовчуванням
3000(для веб-інтерфейсу)
- Prometheus: Порт за замовчуванням
Спочатку оновіть список пакетів вашої системи:
sudo apt update
sudo apt upgrade -y
Встановіть curl та wget, якщо вони ще не встановлені, оскільки вони корисні для завантаження файлів:
sudo apt install -y curl wget
Need a dedicated server?
Compare prices from top providers. Configure and order in minutes.
Покроковий посібник з встановлення
Для простоти ми встановимо Prometheus, Node Exporter та Grafana на одному виділеному сервері. Для більших розгортань ви можете запускати Node Exporter на кількох серверах, а Prometheus/Grafana – на окремому сервері моніторингу.
1. Налаштування Prometheus
Створіть користувача Prometheus та каталоги
Для дотримання найкращих практик безпеки запускайте Prometheus під виділеним обліковим записом користувача.
sudo useradd --no-create-home --shell /bin/false prometheus
sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus
Завантажте та встановіть Prometheus
Відвідайте сторінку завантаження Prometheus, щоб отримати останню стабільну версію. На момент написання ми будемо використовувати версію-заповнювач.
# Check for the latest version on the Prometheus download page
PROMETHEUS_VERSION="2.48.0" # Replace with the latest stable version
wget https://github.com/prometheus/prometheus/releases/download/v${PROMETHEUS_VERSION}/prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz
tar xvf prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz
cd prometheus-${PROMETHEUS_VERSION}.linux-amd64
sudo mv prometheus /usr/local/bin/
sudo mv promtool /usr/local/bin/
sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool
sudo cp -r consoles /etc/prometheus
sudo cp -r console_libraries /etc/prometheus
Налаштуйте Prometheus
Створіть файл конфігурації Prometheus /etc/prometheus/prometheus.yml. Наразі ми почнемо з базової конфігурації.
sudo nano /etc/prometheus/prometheus.yml
Додайте наступний вміст:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
Встановіть відповідні права власності для файлу конфігурації:
sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml
Створіть службу Systemd для Prometheus
Це дозволить 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
[Install]
WantedBy=multi-user.target
Перезавантажте systemd, запустіть Prometheus та увімкніть його для автоматичного запуску під час завантаження:
sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus
Перевірте статус Prometheus
sudo systemctl status prometheus
Ви повинні побачити статус 'active (running)'. Ви також можете перевірити логи:
sudo journalctl -u prometheus -f
2. Налаштування Node Exporter
Node Exporter надає широкий спектр метрик апаратного забезпечення та ОС (CPU, пам'ять, дисковий I/O, мережева статистика тощо) із сервера, на якому він працює.
Створіть користувача Node Exporter та каталоги
sudo useradd --no-create-home --shell /bin/false node_exporter
Завантажте та встановіть Node Exporter
Відвідайте сторінку завантаження Prometheus, щоб отримати останню версію Node Exporter.
# Check for the latest version on the Prometheus download page
NODE_EXPORTER_VERSION="1.7.0" # Replace with the latest stable version
wget https://github.com/prometheus/node_exporter/releases/download/v${NODE_EXPORTER_VERSION}/node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz
tar xvf node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz
cd node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64
sudo mv 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
[Install]
WantedBy=multi-user.target
Перезавантажте systemd, запустіть Node Exporter та увімкніть його для автоматичного запуску під час завантаження:
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
Перевірте статус Node Exporter
sudo systemctl status node_exporter
Ви повинні побачити статус 'active (running)'. Ви також можете перевірити метрики безпосередньо з вашого сервера:
curl http://localhost:9100/metrics
Це виведе велику кількість метрик у вигляді простого тексту.
3. Налаштування Grafana
Встановіть Grafana
Grafana надає офіційні репозиторії APT для легкої установки.
sudo apt install -y apt-transport-https software-properties-common wget
wget -q -O - https://apt.grafana.com/gpg.key | sudo gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/grafana.gpg > /dev/null
echo "deb [signed-by=/etc/apt/trusted.gpg.d/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt update
sudo apt install grafana -y
Запустіть та увімкніть Grafana
sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
Перевірте статус Grafana
sudo systemctl status grafana-server
Ви повинні побачити статус 'active (running)'.
4. Налаштування брандмауера (UFW)
Щоб отримати доступ до веб-інтерфейсів Prometheus та Grafana, вам потрібно відкрити відповідні порти у вашому брандмауері. Припускаючи, що UFW увімкнено:
sudo ufw allow 9090/tcp comment 'Allow Prometheus Web UI'
sudo ufw allow 9100/tcp comment 'Allow Node Exporter Metrics'
sudo ufw allow 3000/tcp comment 'Allow Grafana Web UI'
sudo ufw reload
Якщо у вас увімкнено SSH (що має бути), переконайтеся, що порт 22 також відкритий: sudo ufw allow 22/tcp.
Налаштування Prometheus для збору метрик з Node Exporter
Тепер, коли Node Exporter працює та надає метрики, нам потрібно вказати Prometheus збирати їх. Відредагуйте файл конфігурації Prometheus:
sudo nano /etc/prometheus/prometheus.yml
Додайте новий job_name у розділ scrape_configs для Node Exporter. Оскільки Node Exporter знаходиться на тому ж сервері, ми будемо використовувати localhost:9100.
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100'] # Or replace localhost with the IP of your target server
Збережіть та вийдіть з файлу. Потім перезапустіть Prometheus, щоб застосувати зміни:
sudo systemctl restart prometheus
Налаштування джерела даних та дашборду Grafana
1. Доступ до веб-інтерфейсу Grafana
Відкрийте веб-браузер і перейдіть за адресою http://YOUR_SERVER_IP:3000. Ви повинні побачити сторінку входу Grafana.
Стандартні облікові дані для входу:
- Ім'я користувача:
admin - Пароль:
admin
Вам буде запропоновано негайно змінити стандартний пароль. Виберіть надійний, безпечний пароль.
2. Додайте Prometheus як джерело даних
- У лівому меню наведіть курсор на значок шестерні (Configuration) і натисніть Data sources.
- Натисніть Add data source.
- Знайдіть та виберіть Prometheus.
- У розділі 'HTTP' встановіть 'URL' на
http://localhost:9090(оскільки Prometheus знаходиться на тому ж сервері). - Прокрутіть вниз і натисніть Save & test. Ви повинні побачити повідомлення, що підтверджує "Data source is working."
3. Імпорт дашборду Node Exporter
Сила Grafana полягає в її великій бібліотеці дашбордів, створених спільнотою. Популярний дашборд для метрик Node Exporter – це Node Exporter Full (ID 1860).
- У лівому меню наведіть курсор на значок '+' (Create) і натисніть Import.
- У полі 'Import via grafana.com' введіть
1860і натисніть Load. - На наступному екрані виберіть ваше джерело даних Prometheus зі спадного списку.
- Натисніть Import.
Тепер ви повинні побачити комплексний дашборд, що відображає різні метрики з вашого виділеного сервера, включаючи використання CPU, пам'яті, дискового I/O, мережевого трафіку та багато іншого!
Need a dedicated server?
Compare prices from top providers. Configure and order in minutes.
Тестування налаштування моніторингу
Щоб переконатися, що все працює належним чином:
- Інтерфейс Prometheus: Перейдіть за адресою
http://YOUR_SERVER_IP:9090. Натисніть 'Status' -> 'Targets'. Ви повинні побачити цілі 'prometheus' та 'node_exporter' зі статусом 'UP'. Якщо ні, перевірте логи та конфігурацію Prometheus. - Метрики Node Exporter: Відкрийте
http://YOUR_SERVER_IP:9100/metricsу вашому браузері. Ви повинні побачити сторінку, повну необроблених метрик. - Дашборд Grafana: Взаємодійте з дашбордом Node Exporter Full. Змінюйте часові діапазони, спостерігайте за даними в реальному часі та переконайтеся, що всі панелі відображають дані правильно.
Розширені міркування щодо моніторингу
Оповіщення за допомогою Alertmanager
Хоча цей посібник зосереджений на базовому налаштуванні, повне рішення для моніторингу включає оповіщення. Alertmanager Prometheus обробляє сповіщення, надіслані клієнтськими програмами, групуючи, дедуплікуючи та направляючи їх до каналів сповіщень, таких як електронна пошта, Slack, PagerDuty тощо.
Моніторинг кількох серверів
Щоб моніторити кілька виділених серверів Valebyte, просто встановіть Node Exporter на кожен сервер, який ви бажаєте моніторити. Потім у файлі prometheus.yml вашого центрального сервера Prometheus додайте IP-адресу кожного сервера та порт Node Exporter (наприклад, 192.168.1.10:9100) до списку цілей завдання node_exporter. Не забудьте відкрити порт 9100 на брандмауері кожного моніторингового сервера.
Найкращі практики безпеки для моніторингу
- Брандмауер: Відкривайте порти моніторингу (9090, 9100, 3000) лише для довірених мереж або IP-адрес. Для Grafana розгляньте можливість розміщення її за зворотним проксі (наприклад, Nginx або Apache) з HTTPS для безпечного доступу.
- Аутентифікація: Завжди змінюйте стандартні паролі Grafana. Розгляньте можливість інтеграції Grafana із зовнішнім постачальником автентифікації (LDAP, OAuth) для виробничих середовищ.
- Виділені користувачі: Запуск Prometheus та Node Exporter під непривілейованими користувачами (як це зроблено в цьому посібнику) обмежує потенційну шкоду, якщо служба буде скомпрометована.
Вирішення поширених проблем
Навіть при ретельному виконанні кроків ви можете зіткнутися з проблемами. Ось як їх діагностувати:
1. Служба не запускається (Prometheus, Node Exporter, Grafana)
- Перевірте статус служби:
Шукайте 'active (running)' або конкретні повідомлення про помилки.sudo systemctl status prometheus sudo systemctl status node_exporter sudo systemctl status grafana-server - Перегляньте логи:
Логи – ваш найкращий друг для розуміння, чому служба не запустилася. Шукайте помилки дозволів, проблеми з файлами конфігурації або конфлікти портів.sudo journalctl -u prometheus -f sudo journalctl -u node_exporter -f sudo journalctl -u grafana-server -f - Синтаксис файлу конфігурації: Для Prometheus ви можете перевірити ваш
prometheus.ymlна наявність синтаксичних помилок:
Це покаже вам, чи є якісь помилки парсингу./usr/local/bin/promtool check config /etc/prometheus/prometheus.yml
2. Prometheus не збирає цілі (відсутні метрики Node Exporter)
- Перевірте цілі в інтерфейсі Prometheus: Перейдіть за адресою
http://YOUR_SERVER_IP:9090/targets. Якщо Node Exporter вказано, але зі статусом 'DOWN', перевірте стовпець 'Error' для підказок. - Брандмауер на моніторинговому сервері: Переконайтеся, що порт 9100 (Node Exporter) відкритий на сервері, де працює Node Exporter. Якщо Prometheus знаходиться на іншому сервері, переконайтеся, що його IP-адреса дозволена брандмауером сервера Node Exporter.
- Node Exporter працює: Перевірте, чи Node Exporter активний та доступний локально на моніторинговому сервері:
Якщоsudo systemctl status node_exporter curl http://localhost:9100/metricscurlне вдається, Node Exporter не працює або не прослуховує очікуваний порт/інтерфейс. - Конфігурація Prometheus: Двічі перевірте запис
targetsу/etc/prometheus/prometheus.ymlна наявність друкарських помилок (наприклад,localhost:9100або правильну IP-адресу). Не забудьте перезапустити Prometheus після будь-яких змін конфігурації.
3. Grafana не відображає дані або "Помилка джерела даних"
- Підключення до джерела даних Prometheus: У Grafana перейдіть до 'Configuration' -> 'Data sources', натисніть на ваше джерело даних Prometheus і натисніть 'Save & test'. Якщо це не вдається, перевірте IP-адресу та порт сервера Prometheus у конфігурації джерела даних Grafana.
- Брандмауер на сервері Prometheus: Переконайтеся, що порт 9090 (Prometheus) відкритий на сервері, де працює Prometheus, дозволяючи Grafana підключатися.
- Prometheus працює та збирає метрики: Перевірте, чи Prometheus працює та активно збирає метрики Node Exporter (згідно з кроком 2 вирішення проблем). Якщо Prometheus не збирає дані, Grafana не матиме що відображати.
- Конфігурація дашборду: Якщо деякі панелі порожні, переконайтеся, що запити в цих панелях правильні та посилаються на потрібні метрики. Іноді дашборди спільноти можуть потребувати невеликих коригувань для конкретних версій Prometheus або назв метрик.
4. Проблеми з дозволами
Якщо служби не запускаються або не записують дані, перевірте дозволи файлів та каталогів. Переконайтеся, що виділені користувачі (prometheus, node_exporter) є власниками відповідних каталогів та файлів, як це налаштовано у файлах служб systemd.
ls -la /usr/local/bin/prometheus
ls -la /etc/prometheus/prometheus.yml
ls -la /var/lib/prometheus
Систематично перевіряючи ці пункти, ви зможете вирішити більшість поширених проблем, що виникають під час налаштування вашого стеку моніторингу Prometheus та Grafana на виділеному сервері Valebyte.