Почему стоит выбрать Prometheus и Grafana для мониторинга на выделенном сервере?
Мониторинг критически важен для любой серверной инфраструктуры, особенно для выделенных серверов или серверов без виртуализации (bare metal), где производительность и время безотказной работы имеют первостепенное значение. Prometheus — это система мониторинга с открытым исходным кодом, которая собирает метрики с настроенных целей через заданные интервалы, оценивает выражения правил, отображает результаты и может запускать оповещения, если какое-либо условие оказывается истинным. Grafana, в свою очередь, представляет собой веб-приложение для аналитики и интерактивной визуализации с открытым исходным кодом, которое подключается к различным источникам данных, включая Prometheus, для создания мощных, настраиваемых дашбордов.
Выбор выделенного сервера (bare metal) от Valebyte для вашего стека мониторинга предлагает явные преимущества:
- Выделенные ресурсы: Отсутствие конкуренции за ресурсы гарантирует, что ваша система мониторинга всегда будет иметь необходимый CPU, RAM и I/O, даже при высокой нагрузке.
- Производительность: Превосходный дисковый I/O (особенно с NVMe SSD) для эффективного хранения и запроса больших объемов временных рядов данных.
- Изоляция: Полный контроль над средой, повышающий безопасность и стабильность критически важной инфраструктуры мониторинга.
- Масштабируемость: Легче напрямую обновлять аппаратные компоненты по мере роста ваших потребностей в мониторинге.
Для небольших развертываний, таких как мониторинг одного приложения или нескольких личных сервисов, высокопроизводительный Valebyte VPS может служить отличной, экономически эффективной платформой для Prometheus и Grafana. Однако для мониторинга нескольких производственных серверов, хранения обширных исторических данных или обработки высокой частоты сбора метрик (scrape rate) выделенный сервер 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. Для базовой настройки часто достаточно конфигурации по умолчанию, но позже мы добавим цель сбора метрик (scrape target) для 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 configuration) в раздел 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 'Allow Prometheus'
sudo ufw allow 9999/tcp comment 'Allow Prometheus Alertmanager' # If you plan to use Alertmanager
sudo ufw allow 9100/tcp comment 'Allow Node Exporter'
sudo ufw allow 3000/tcp comment 'Allow 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) и других самостоятельно размещенных инструментов.