Чому моніторинг Bare Metal є критично важливим для вашого виділеного сервера
Виділені сервери від Valebyte пропонують неперевершену продуктивність, контроль та безпеку. Однак, з великою потужністю приходить відповідальність за ретельне управління. Моніторинг вашого bare metal сервера за допомогою таких інструментів, як Prometheus та Grafana, є не просто опцією; це необхідність для:
- Проактивного вирішення проблем: Виявляйте потенційні проблеми, такі як високе використання CPU, низький обсяг дискового простору або вузькі місця в мережі, перш ніж вони вплинуть на ваші послуги.
- Оптимізації продуктивності: Розумійте закономірності використання ресурсів, щоб точно налаштувати ваші програми, бази даних або ігрові сервери для максимальної ефективності.
- Забезпечення безперебійної роботи: Отримуйте сповіщення про критичні події, гарантуючи швидке реагування для підтримки доступності послуг для ваших користувачів, клієнтів або гравців.
- Планування потужності: Збирайте історичні дані для прийняття обґрунтованих рішень щодо масштабування вашої інфраструктури в міру зростання ваших потреб.
- Аудиту безпеки: Відстежуйте незвичайну мережеву активність або сплески ресурсів, які можуть вказувати на інцидент безпеки.
Prometheus – це система моніторингу з відкритим вихідним кодом з багатовимірною моделлю даних, гнучкою мовою запитів (PromQL), ефективною базою даних часових рядів та сучасним підходом до сповіщень. Grafana, з іншого боку, є провідною платформою з відкритим вихідним кодом для моніторингу та спостережуваності, що дозволяє запитувати, візуалізувати, сповіщати та досліджувати ваші метрики незалежно від того, де вони зберігаються.
Передумови та вимоги до сервера
Перш ніж ми зануримося в установку, переконайтеся, що ваш виділений сервер Valebyte відповідає наступним вимогам:
Операційна система
- Свіжа установка дистрибутива Linux. Цей посібник надасть команди як для Ubuntu/Debian, так і для CentOS/RHEL.
Апаратні ресурси
Prometheus та Grafana є відносно легкими для базового моніторингу, але споживання ресурсів масштабується з кількістю зібраних метрик та періодом зберігання. Для типової установки моніторингу виділеного сервера:
- CPU: 2+ ядра (сучасні багатоядерні CPU ефективні).
- RAM: 2GB+ (Prometheus використовує RAM для свого індексу в пам'яті; Grafana також потребує деякої кількості).
- Storage: 50GB+ SSD (Prometheus зберігає дані часових рядів; SSD настійно рекомендуються для продуктивності).
Мережевий доступ
Переконайтеся, що наступні порти відкриті у брандмауері вашого сервера (і, можливо, у ваших групах мережевої безпеки):
- 9090/TCP: Веб-інтерфейс та API Prometheus.
- 3000/TCP: Веб-інтерфейс Grafana.
- 9100/TCP: Node Exporter (для метрик хоста).
- 22/TCP: SSH (для віддаленого доступу, який ви, ймовірно, використовуєте).
Права користувача
- Sudo доступ або root-привілеї для встановлення пакетів та управління службами.
Покроковий посібник з установки
Почнемо налаштування вашого стеку моніторингу.
Крок 1: Підготуйте ваш Bare Metal сервер
Спочатку оновіть список пакетів вашої системи та встановлені пакети. Це гарантує, що у вас є останні виправлення безпеки та залежності.
Для Ubuntu/Debian:
sudo apt update
sudo apt upgrade -y
sudo apt install -y wget curl apt-transport-https software-properties-common
Для CentOS/RHEL:
sudo yum update -y
sudo yum install -y wget curl
Далі створіть виділених системних користувачів для Prometheus та Node Exporter. Це найкраща практика безпеки, що обмежує привілеї цих служб.
sudo useradd --no-create-home --shell /bin/false prometheus
sudo useradd --no-create-home --shell /bin/false node_exporter
Крок 2: Встановіть Prometheus Server
Prometheus розповсюджується як попередньо скомпільовані бінарні файли. Ми завантажимо останню стабільну версію, розпакуємо її та налаштуємо службу systemd.
1. Завантажте Prometheus: Знайдіть останню стабільну версію на сторінці завантаження Prometheus. Замініть номер версії, якщо доступна новіша.
cd /tmp
wget https://github.com/prometheus/prometheus/releases/download/v2.48.1/prometheus-2.48.1.linux-amd64.tar.gz
tar xvfz prometheus-2.48.1.linux-amd64.tar.gz
2. Перемістіть бінарні файли та встановіть дозволи:
sudo mkdir -p /etc/prometheus
sudo mkdir -p /var/lib/prometheus
sudo cp prometheus-2.48.1.linux-amd64/prometheus /usr/local/bin/
sudo cp prometheus-2.48.1.linux-amd64/promtool /usr/local/bin/
sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool
sudo cp -r prometheus-2.48.1.linux-amd64/consoles /etc/prometheus
sudo cp -r prometheus-2.48.1.linux-amd64/console_libraries /etc/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus/consoles
sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries
sudo chown prometheus:prometheus /var/lib/prometheus
3. Створіть файл конфігурації Prometheus:
Створіть /etc/prometheus/prometheus.yml з наступною базовою конфігурацією. Це налаштовує Prometheus для моніторингу самого себе.
sudo nano /etc/prometheus/prometheus.yml
global: scrape_interval: 15s # Як часто збирати цілі evaluation_interval: 15s # Як часто оцінювати правила alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 rule_files: # - "first_rules.yml" # - "second_rules.yml" scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] # Сам сервер Prometheus
Встановіть відповідні дозволи для файлу конфігурації:
sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml
4. Створіть файл служби Systemd для Prometheus:
Створіть /etc/systemd/system/prometheus.service:
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=:9090 [Install] WantedBy=multi-user.target
5. Запустіть та увімкніть Prometheus:
sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus
sudo systemctl status prometheus
Перевірте, чи працює Prometheus, перевіривши його статус. Ви повинні побачити active (running). Ви також можете отримати доступ до інтерфейсу Prometheus у своєму веб-браузері за адресою http://YOUR_SERVER_IP:9090.
Крок 3: Встановіть Node Exporter (для метрик хоста)
Node Exporter надає широкий спектр апаратних та ОС метрик (CPU, пам'ять, дисковий ввід/вивід, мережева статистика) з вашого bare metal сервера. Це має вирішальне значення для розуміння стану вашого сервера.
1. Завантажте Node Exporter: Знайдіть останню стабільну версію на сторінці завантаження Prometheus.
cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvfz node_exporter-1.7.0.linux-amd64.tar.gz
2. Перемістіть бінарний файл та встановіть дозволи:
sudo cp node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
3. Створіть файл служби Systemd для Node Exporter:
Створіть /etc/systemd/system/node_exporter.service:
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 --web.listen-address=:9100 [Install] WantedBy=multi-user.target
4. Запустіть та увімкніть Node Exporter:
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
sudo systemctl status node_exporter
Ви можете перевірити, чи працює Node Exporter, відвідавши http://YOUR_SERVER_IP:9100/metrics у своєму браузері. Ви повинні побачити велику кількість метрик у вигляді простого тексту.
5. Додайте Node Exporter до конфігурації Prometheus:
Відредагуйте /etc/prometheus/prometheus.yml, щоб додати Node Exporter як ціль:
sudo nano /etc/prometheus/prometheus.yml
Додайте наступний запис scrape_configs:
scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node_exporter' static_configs: - targets: ['localhost:9100'] # Node Exporter працює на тому ж сервері
6. Перезавантажте конфігурацію Prometheus:
sudo systemctl reload prometheus
Перейдіть до інтерфейсу Prometheus (http://YOUR_SERVER_IP:9090), перейдіть до 'Status' -> 'Targets'. Тепер ви повинні побачити обидва завдання 'prometheus' та 'node_exporter' зі статусом 'UP'.
Крок 4: Встановіть Grafana
Grafana отримуватиме дані з Prometheus та представлятиме їх у красивих, настроюваних інформаційних панелях.
Для Ubuntu/Debian:
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
sudo apt update
sudo apt install grafana -y
Для CentOS/RHEL:
sudo nano /etc/yum.repos.d/grafana.repo
[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
sudo yum install grafana -y
Запустіть та увімкніть Grafana:
sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo systemctl status grafana-server
Grafana повинна тепер працювати. Отримайте доступ до її веб-інтерфейсу за адресою http://YOUR_SERVER_IP:3000. Логін за замовчуванням – admin / admin. Вам буде запропоновано змінити пароль при першому вході – ЗРОБІТЬ ЦЕ НЕГАЙНО!
Крок 5: Налаштуйте Grafana для візуалізації даних Prometheus
1. Додайте Prometheus як джерело даних:
- Увійдіть до Grafana (
http://YOUR_SERVER_IP:3000). - Натисніть піктограму шестерні (Configuration) на лівій бічній панелі, потім виберіть 'Data sources'.
- Натисніть 'Add data source'.
- Виберіть 'Prometheus' зі списку.
- У розділі 'HTTP' встановіть 'URL' на
http://localhost:9090(оскільки Prometheus знаходиться на тому ж сервері). - Прокрутіть вниз і натисніть 'Save & Test'. Ви повинні побачити повідомлення, що підтверджує 'Data source is working'.
2. Імпортуйте попередньо створену інформаційну панель для Node Exporter:
Grafana пропонує величезну бібліотеку інформаційних панелей, створених спільнотою. Популярна для Node Exporter має ID 1860.
- Натисніть піктограму '+' на лівій бічній панелі, потім виберіть 'Import'.
- У полі 'Import via grafana.com' введіть
1860і натисніть 'Load'. - На наступному екрані виберіть ваше джерело даних Prometheus зі спадного списку.
- Натисніть 'Import'.
Тепер ви повинні побачити комплексну інформаційну панель, що відображає метрики з вашого bare metal сервера, охоплюючи CPU, пам'ять, дисковий ввід/вивід, мережевий трафік та багато іншого. Це надає негайне розуміння стану вашого сервера, що має вирішальне значення для управління всім, від ігрових серверів до складних веб-додатків.
Крок 6: Захистіть ваш стек моніторингу
Виставлення інструментів моніторингу в Інтернет без належного захисту є значним ризиком. Реалізуйте ці кроки для виробничих середовищ.
1. Налаштуйте ваш брандмауер:
Відкривайте лише необхідні порти та обмежуйте доступ до довірених IP-адрес, де це можливо.
Для UFW (Ubuntu/Debian):
sudo ufw allow ssh
sudo ufw allow 9090/tcp # Prometheus (розгляньте обмеження для конкретних IP)
sudo ufw allow 3000/tcp # Grafana (розгляньте обмеження для конкретних IP)
sudo ufw allow 9100/tcp # Node Exporter (розгляньте обмеження для IP сервера Prometheus)
sudo ufw enable
Для Firewalld (CentOS/RHEL):
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --add-port=9090/tcp --permanent # Prometheus
sudo firewall-cmd --add-port=3000/tcp --permanent # Grafana
sudo firewall-cmd --add-port=9100/tcp --permanent # Node Exporter
sudo firewall-cmd --reload
Важливо: Для Prometheus та Grafana настійно рекомендується обмежити доступ до певного діапазону довірених IP-адрес або проксіювати їх за веб-сервером з автентифікацією та HTTPS.
2. Захистіть Grafana:
- Змініть пароль адміністратора за замовчуванням: Ви вже зробили це (сподіваємося!).
- Увімкніть HTTPS: Налаштуйте Nginx або Apache як зворотний проксі для Grafana та захистіть його за допомогою SSL-сертифіката Let's Encrypt. Це шифрує трафік до вашого інтерфейсу Grafana.
- Управління користувачами: Створюйте конкретних користувачів з відповідними ролями (Viewer, Editor, Admin) замість спільного використання облікового запису 'admin'.
3. Захистіть Prometheus:
- Зворотний проксі з автентифікацією: Аналогічно, використовуйте Nginx або Apache для проксіювання запитів до веб-інтерфейсу Prometheus (порт 9090) та додайте базову автентифікацію.
Need a dedicated server?
Compare prices from top providers. Configure and order in minutes.
Приклади конфігурації та розширений моніторинг
Моніторинг додаткових програм (Exporters)
Потужність Prometheus походить від його екосистеми 'експортерів'. Це невеликі програми, які надають метрики з різних служб у форматі, зрозумілому для Prometheus.
- Моніторинг баз даних: Встановіть
mysqld_exporterдля MySQL/MariaDB абоpostgres_exporterдля PostgreSQL. - Моніторинг веб-серверів: Використовуйте
apache_exporterабоnginx_exporterдля отримання метрик щодо HTTP-запитів, з'єднань тощо. - Користувацькі програми: Використовуйте клієнтські бібліотеки Prometheus (доступні для Go, Java, Python, Ruby, Node.js), щоб інструментувати власні програми та надавати користувацькі метрики.
Після встановлення експортера вам потрібно буде додати його як новий job_name у вашому файлі /etc/prometheus/prometheus.yml, подібно до того, як ви додали Node Exporter. Не забудьте перезавантажити Prometheus (sudo systemctl reload prometheus) після будь-яких змін конфігурації.
Сповіщення за допомогою Alertmanager
Хоча Grafana може надсилати базові сповіщення, Alertmanager Prometheus обробляє більш складні сповіщення. Він дедуплікує, групує та маршрутизує сповіщення до різних каналів сповіщень (електронна пошта, Slack, PagerDuty тощо).
Базове налаштування Alertmanager:
- Завантажте Alertmanager: Подібно до Prometheus, завантажте останній бінарний файл зі сторінки завантаження Prometheus.
- Налаштуйте Alertmanager: Створіть
/etc/alertmanager/alertmanager.ymlдля визначення отримувачів та маршрутизації. - Створіть службу Systemd: Налаштуйте службу systemd для Alertmanager.
- Інтегруйте з Prometheus: Додайте адресу Alertmanager до розділу
alertingвашого/etc/prometheus/prometheus.yml. - Визначте правила сповіщень: Створіть файли
.yml(наприклад,/etc/prometheus/rules.yml) з виразами PromQL, які визначають, коли має спрацювати сповіщення, та включіть їх доrule_filesуprometheus.yml.
Це дозволяє вам миттєво отримувати сповіщення, якщо ваш виділений сервер відчуває високе навантаження на CPU, критичне використання дискового простору або якщо процеси вашого ігрового сервера перестають відповідати. Цей рівень проактивного моніторингу є безцінним для підтримки високої доступності таких послуг, як веб-хостинг, поштові сервери та CI/CD-конвеєри.
Тестування та перевірка
- Цілі Prometheus: В інтерфейсі Prometheus (
http://YOUR_SERVER_IP:9090) перейдіть до 'Status' -> 'Targets'. Переконайтеся, що всі налаштовані цілі (prometheus, node_exporter та будь-які інші експортери) показують 'UP'. - Графік Prometheus: Використовуйте вкладку 'Graph' у Prometheus для виконання простих запитів, наприклад,
node_cpu_seconds_totalабоprometheus_build_info, щоб переконатися, що дані збираються. - Інформаційні панелі Grafana: Переконайтеся, що ваша імпортована інформаційна панель Node Exporter (ID 1860) заповнюється живими даними. Спробуйте налаштувати часовий діапазон, щоб побачити історичні дані.
- Сповіщення (якщо налаштовано): Якщо ви налаштували Alertmanager, створіть тестове правило сповіщення, призначене для негайного спрацьовування (наприклад,
vector(1)), щоб переконатися, що сповіщення надсилаються правильно.
Вирішення поширених проблем
Навіть при ретельному налаштуванні можуть виникнути проблеми. Ось як діагностувати та виправляти поширені проблеми:
Служба не запускається
Якщо Prometheus, Node Exporter або Grafana не запускаються:
- Перевірте журнали: Найважливіший крок. Використовуйте
journalctlдля перегляду журналів служби.sudo journalctl -xeu prometheus sudo journalctl -xeu node_exporter sudo journalctl -xeu grafana-server - Дозволи: Переконайтеся, що користувачі служби (
prometheus,node_exporter) мають доступ для читання/запису до своїх відповідних каталогів (/etc/prometheus,/var/lib/prometheusтощо). - Синтаксис конфігурації: Для Prometheus запустіть
promtool check config /etc/prometheus/prometheus.yml, щоб перевірити вашу конфігурацію.
Prometheus не збирає цілі (статус 'DOWN')
- Брандмауер: Переконайтеся, що порт цілі (наприклад, 9100 для Node Exporter) відкритий на сервері, де працює експортер.
- IP-адреса/порт: Двічі перевірте запис
targetsуprometheus.yml. Він повинен відповідати фактичній адресі прослуховування експортера. - Експортер працює: Перевірте, чи сама служба експортера працює на цільовому сервері (наприклад,
sudo systemctl status node_exporter). - Мережеве підключення: З сервера Prometheus спробуйте
curl http://TARGET_IP:PORT/metrics, щоб перевірити, чи він доступний.
Grafana не підключається до джерела даних Prometheus
- Prometheus працює: Переконайтеся, що сервер Prometheus активний та доступний з сервера Grafana.
- Брандмауер: Підтвердьте, що Grafana може досягти Prometheus на порту 9090 (якщо на окремих серверах, або якщо встановлено суворий локальний брандмауер).
- URL у джерелі даних: Перевірте, чи правильний 'URL' у конфігурації джерела даних Prometheus у Grafana (наприклад,
http://localhost:9090абоhttp://PROMETHEUS_SERVER_IP:9090).
'Немає даних' на інформаційних панелях Grafana
- Часовий діапазон: Перевірте селектор часового діапазону в Grafana. Чи встановлено його на 'Останні 5 хвилин', але ваші дані старіші?
- Дані Prometheus: Чи можете ви бачити дані безпосередньо на вкладці 'Graph' інтерфейсу Prometheus, використовуючи ті ж запити PromQL? Якщо ні, Prometheus їх не збирає.
- Вибране джерело даних: Переконайтеся, що правильне джерело даних Prometheus вибрано в конфігурації панелі інформаційної панелі.
- Помилки запитів: Перевірте 'Query Inspector' у Grafana на наявність будь-яких помилок у запитах PromQL, що використовуються панелями інформаційної панелі.
Високе використання ресурсів стеком моніторингу
- Зберігання Prometheus: За замовчуванням Prometheus зберігає дані протягом 15 днів. Якщо вам потрібно довше, налаштуйте
--storage.tsdb.retention.timeабо--storage.tsdb.retention.sizeу файлі служби systemd. Пам'ятайте про дисковий простір. - Інтервали збору: Якщо ви збираєте сотні цілей кожну секунду, Prometheus споживатиме більше ресурсів. За потреби налаштуйте
scrape_intervalуprometheus.yml. - Кількість експортерів/метрик: Кожен експортер додає метрики. Увімкніть лише ті експортери та збирайте ті метрики, які дійсно корисні.
Need a dedicated server?
Compare prices from top providers. Configure and order in minutes.
Реальні випадки використання моніторингу виділених серверів
Впровадження Prometheus та Grafana на вашому виділеному сервері Valebyte дозволяє оптимізувати та підтримувати широкий спектр критично важливих програм:
- Ігрові сервери: Моніторинг CPU, RAM, затримки мережі та дискового вводу/виводу для забезпечення плавного ігрового процесу, виявлення DDoS-атак та ефективного масштабування ресурсів для популярних ігор.
- Веб-хостинг з високим трафіком: Відстежуйте продуктивність веб-сервера (Nginx, Apache), запити до баз даних та час відгуку програм для гарантування швидкого завантаження та високої доступності ваших веб-сайтів.
- Надійні бази даних: Відстежуйте продуктивність запитів, кількість з'єднань, використання диска та статус реплікації для MySQL, PostgreSQL або MongoDB, запобігаючи уповільненням та втраті даних.
- Надійні поштові сервери: Моніторинг довжини черг, спроб з'єднання, дискового простору та використання ресурсів для Postfix, Dovecot або Exchange для забезпечення доставки електронної пошти та запобігання проблемам зі спамом.
- Стрімінгові платформи: Контролюйте використання пропускної здатності, кількість одночасних користувачів, навантаження на CPU від транскодування та продуктивність сховища для забезпечення безперебійного медіа-досвіду.
- CI/CD-конвеєри: Відстежуйте споживання ресурсів агентами збірки, час виконання завдань та дисковий простір під час процесів безперервної інтеграції та розгортання, оптимізуючи ваш робочий процес розробки.
- Обробка великих даних: Моніторинг розподілу ресурсів, прогресу завдань та стану кластера для Spark, Hadoop або інших фреймворків великих даних, що працюють на вашій виділеній інфраструктурі.
- Хости віртуалізації: Якщо ви запускаєте віртуальні машини на своєму bare metal сервері, моніторте загальний стан хоста та розподіл ресурсів для забезпечення оптимальної продуктивності для всіх гостей.