Зачем Prometheus и Grafana для мониторинга выделенных серверов?
Выделенные серверы (bare metal) предлагают беспрецедентную производительность, контроль и изоляцию, что делает их идеальными для требовательных рабочих нагрузок, таких как высоконагруженный веб-хостинг, крупные базы данных, игровые серверы, CI/CD конвейеры и стриминговые сервисы. Однако эффективное управление этими мощными машинами требует надежного мониторинга. Prometheus отлично справляется со сбором временных рядов данных, а Grafana предоставляет интуитивно понятные дашборды для визуализации этих данных. Вместе они образуют мощную комбинацию для понимания состояния сервера, выявления узких мест и проактивного решения проблем.
Это руководство посвящено установке стека мониторинга (Prometheus и Grafana) на выделенный сервер или мощный VPS, который затем будет отслеживать другие выделенные серверы с помощью Node Exporter. Это гарантирует, что сама система мониторинга имеет выделенные ресурсы и не конкурирует с сервисами, работающими на отслеживаемых машинах.
Предварительные требования и минимальные системные требования
Прежде чем начать, убедитесь, что у вас есть:
- Выделенный сервер или мощный VPS от Valebyte с чистой установкой Ubuntu 22.04 LTS (или аналогичного дистрибутива на базе Debian). Для самого сервера мониторинга мы рекомендуем как минимум 4 vCPU, 8 ГБ ОЗУ и 100 ГБ NVMe-хранилища для использования в продакшене, что обеспечит хранение данных и отзывчивость дашбордов.
- Root или sudo доступ к серверу мониторинга.
- Root или sudo доступ к выделенным серверам, которые вы хотите отслеживать.
- Базовое понимание интерфейса командной строки Linux.
- Открытые порты в вашем брандмауэре: 9090 для Prometheus, 3000 для Grafana и 9100 для Node Exporter (на отслеживаемых серверах).
Пошаговое руководство по установке
Шаг 1: Обновление системы и установка зависимостей
Сначала подключитесь к вашему серверу мониторинга по SSH и обновите списки пакетов и установленные пакеты. Установите необходимые утилиты:
sudo apt update
sudo apt upgrade -y
sudo apt install -y wget curl gnupg2 software-properties-common apt-transport-https
Шаг 2: Установка сервера Prometheus
Prometheus обычно не находится в стандартных репозиториях Ubuntu, поэтому мы загрузим последнюю стабильную версию напрямую.
- Создание пользователя и каталогов Prometheus:
- Загрузка и извлечение Prometheus: Замените
2.47.1на последнюю стабильную версию, если она отличается. Проверьте страницу загрузок Prometheus. - Создание файла конфигурации Prometheus (
/etc/prometheus/prometheus.yml): - Установка прав владения для конфигурации:
- Создание файла службы systemd для Prometheus (
/etc/systemd/system/prometheus.service): - Перезагрузка systemd, запуск и включение 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
wget https://github.com/prometheus/prometheus/releases/download/v2.47.1/prometheus-2.47.1.linux-amd64.tar.gz
tar xvfz prometheus-2.47.1.linux-amd64.tar.gz
sudo cp prometheus-2.47.1.linux-amd64/prometheus /usr/local/bin/
sudo cp prometheus-2.47.1.linux-amd64/promtool /usr/local/bin/
sudo cp -r prometheus-2.47.1.linux-amd64/consoles /etc/prometheus
sudo cp -r prometheus-2.47.1.linux-amd64/console_libraries /etc/prometheus
sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool
sudo chown -R prometheus:prometheus /etc/prometheus/consoles
sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries
rm -rf prometheus-2.47.1.linux-amd64.tar.gz prometheus-2.47.1.linux-amd64
sudo nano /etc/prometheus/prometheus.yml
Вставьте следующее содержимое. Эта конфигурация включает базовую цель сбора данных (scrape target) для самого Prometheus и заполнитель для целей Node Exporter.
global:
scrape_interval: 15s # How frequently to scrape targets
evaluation_interval: 15s # How frequently to evaluate rules
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
# Add your bare metal servers here after installing Node Exporter
# - job_name: 'node_exporter'
# static_configs:
# - targets: ['your_server_ip_1:9100', 'your_server_ip_2:9100']
Сохраните и выйдите (Ctrl+X, Y, Enter).
sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml
sudo nano /etc/systemd/system/prometheus.service
Вставьте следующее:
[Unit]
Description=Prometheus Monitoring System
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.enable-lifecycle
[Install]
WantedBy=multi-user.target
Сохраните и выйдите.
sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus
sudo systemctl status prometheus
Вы должны увидеть active (running). Доступ к пользовательскому интерфейсу Prometheus в вашем браузере по адресу http://YOUR_MONITORING_SERVER_IP:9090.
Шаг 3: Установка Node Exporter на отслеживаемые выделенные серверы
Node Exporter — это агент, который собирает системные метрики (CPU, RAM, дисковый ввод-вывод, сеть) и предоставляет их для сбора Prometheus. Установите его на каждый выделенный сервер, который вы хотите отслеживать.
- Создание пользователя и каталогов Node Exporter:
- Загрузка и извлечение Node Exporter: Замените
1.6.1на последнюю стабильную версию, если она отличается. Проверьте страницу загрузок Node Exporter. - Создание файла службы systemd для Node Exporter (
/etc/systemd/system/node_exporter.service): - Перезагрузка systemd, запуск и включение Node Exporter:
- Проверка статуса Node Exporter:
sudo useradd --no-create-home --shell /bin/false node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
tar xvfz node_exporter-1.6.1.linux-amd64.tar.gz
sudo cp node_exporter-1.6.1.linux-amd64/node_exporter /usr/local/bin/
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
rm -rf node_exporter-1.6.1.linux-amd64.tar.gz node_exporter-1.6.1.linux-amd64
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 start node_exporter
sudo systemctl enable node_exporter
sudo systemctl status node_exporter
Вы должны увидеть active (running). Доступ к метрикам Node Exporter в вашем браузере по адресу http://YOUR_MONITORED_SERVER_IP:9100/metrics.
Шаг 4: Настройка Prometheus для сбора данных с целей Node Exporter
Теперь вернитесь на ваш сервер мониторинга. Отредактируйте конфигурацию Prometheus, чтобы добавить ваши выделенные серверы.
- Редактирование конфигурации Prometheus:
- Добавление новых записей
job_nameдля ваших выделенных серверов: Заменитеyour_server_ip_1,your_server_ip_2на фактические IP-адреса ваших отслеживаемых серверов. - Проверка конфигурации Prometheus на наличие синтаксических ошибок:
- Перезагрузка Prometheus для применения изменений:
- Проверка целей в пользовательском интерфейсе Prometheus: Перейдите по адресу
http://YOUR_MONITORING_SERVER_IP:9090/targets. Вы должны увидеть свои цели Node Exporter, перечисленные со статусом 'UP'.
sudo nano /etc/prometheus/prometheus.yml
# ... existing configuration ...
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['192.168.1.10:9100', '192.168.1.11:9100', 'your_next_server_ip:9100']
# Optionally, add labels for better organization
# labels:
# environment: production
# location: datacenter_a
Сохраните и выйдите.
/usr/local/bin/promtool check config /etc/prometheus/prometheus.yml
Должно быть выведено SUCCESS!. В противном случае исправьте все обнаруженные ошибки.
sudo systemctl reload prometheus
Шаг 5: Установка Grafana
Grafana предоставляет уровень визуализации для ваших данных Prometheus.
- Добавление GPG-ключа Grafana:
- Добавление репозитория Grafana:
- Обновление кэша apt и установка Grafana:
- Запуск и включение службы Grafana:
- Проверка статуса 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
sudo apt update
sudo apt install -y grafana
sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo systemctl status grafana-server
Вы должны увидеть active (running). Доступ к пользовательскому интерфейсу Grafana в вашем браузере по адресу http://YOUR_MONITORING_SERVER_IP:3000. Логин по умолчанию: admin / admin. Вам будет предложено изменить пароль при первом входе.
Шаг 6: Настройка источника данных и дашборда Grafana
Теперь подключите Grafana к Prometheus и импортируйте полезный дашборд.
- Добавление Prometheus в качестве источника данных:
- Войдите в Grafana (
admin/admin). - Нажмите на значок шестеренки (Конфигурация) на левой боковой панели, затем 'Источники данных'.
- Нажмите 'Добавить источник данных'.
- Выберите 'Prometheus'.
- Для 'Имя' введите
Prometheus. - Для 'URL' введите
http://localhost:9090. - Прокрутите вниз и нажмите 'Сохранить и проверить'. Вы должны увидеть 'Источник данных работает'.
- Войдите в Grafana (
- Импорт дашборда Node Exporter:
- Нажмите на значок '+' (Создать) на левой боковой панели, затем 'Импорт'.
- В поле 'Импорт через grafana.com' введите
1860(популярный ID дашборда Node Exporter Full). - Нажмите 'Загрузить'.
- На следующем экране выберите ваш источник данных 'Prometheus' из выпадающего списка.
- Нажмите 'Импорт'.
Теперь вы должны увидеть комплексный дашборд, визуализирующий метрики со всех ваших отслеживаемых выделенных серверов.
Варианты использования мониторинга выделенных серверов
С помощью Prometheus и Grafana вы можете отслеживать широкий спектр рабочих нагрузок на выделенных серверах:
- Веб-хостинг: Отслеживайте запросы Nginx/Apache в секунду, время отклика, одновременные соединения и использование ресурсов для обеспечения оптимальной производительности веб-сайта.
- Базы данных (например, PostgreSQL, MySQL): Мониторинг задержки запросов, активных соединений, коэффициентов попадания в буфер, дискового ввода-вывода и статуса репликации для поддержания работоспособности базы данных.
- Игровые серверы: Следите за загрузкой CPU, задержкой сети, количеством игроков и использованием памяти для обеспечения плавного игрового процесса.
- Стриминговые сервисы: Отслеживайте использование пропускной способности, одновременные потоки и нагрузку на сервер для обеспечения бесперебойной доставки контента.
- CI/CD конвейеры: Мониторинг ресурсов агентов сборки, дискового пространства и сетевой активности во время процессов непрерывной интеграции и развертывания.
- Самостоятельно размещенные приложения: Отслеживайте потребление ресурсов пользовательских приложений, почтовых серверов (например, Postfix, Dovecot) или VPN-сервисов (например, OpenVPN, WireGuard) для обеспечения их стабильности.
Устранение распространенных проблем
- Prometheus/Grafana/Node Exporter не запускается: Проверьте
sudo systemctl status <service_name>иsudo journalctl -xeu <service_name>на наличие сообщений об ошибках. - Prometheus не собирает данные с целей: Проверьте IP-адреса целей и номера портов в
prometheus.yml. Убедитесь, что брандмауэры (например, UFW) как на сервере мониторинга, так и на отслеживаемых серверах разрешают трафик на портах 9090 (Prometheus), 3000 (Grafana) и 9100 (Node Exporter). Проверьтеhttp://YOUR_MONITORING_SERVER_IP:9090/targetsв пользовательском интерфейсе Prometheus на наличие ошибок сбора данных. - Grafana не отображает данные: Убедитесь, что источник данных Prometheus настроен правильно и 'Сохранить и проверить' показывает успех. Убедитесь, что импортированный вами дашборд совместим с метриками Node Exporter.
- Проблемы с разрешениями: Дважды проверьте владение файлами и каталогами (
chown) и разрешения (chmod) для исполняемых файлов и файлов конфигурации Prometheus и Node Exporter.
Правильная серверная инфраструктура имеет решающее значение для эффективного мониторинга. Ниже приведены общие рекомендации по аппаратному обеспечению для вашего сервера мониторинга, основанные на масштабе вашей среды выделенных серверов.
| Количество отслеживаемых серверов (с Node Exporter) | vCPU / Ядра | ОЗУ | Диск (Тип + ГБ) | Ежемесячная пропускная способность |
|---|---|---|---|---|
| До 10 серверов | 4 vCPU | 8 ГБ | 100 ГБ NVMe | 1 ТБ |
| 10 - 50 серверов | 8 ядер | 16-32 ГБ | 250 ГБ NVMe | 2 ТБ |
| 50 - 150 серверов | 12-16 ядер | 32-64 ГБ | 500 ГБ NVMe (или более крупный HDD для долгосрочного хранения) | 5 ТБ |
| 150+ серверов (с высокой кардинальностью метрик) | 16-24 ядра | 64-128 ГБ | 1 ТБ+ NVMe (или кластерное решение для хранения данных) | 10 ТБ+ |