Перейти к содержанию

Обзор развертывания Prometheus на сервере

Предварительные требования и базовые условия

  • Операционная система: Ubuntu (совместимая с Docker Engine).

  • Права доступа: Для управления контейнерами и операций с файловой системой требуются права root или привилегии sudo.

  • Зона домена: hostkey.in.

  • Порты:

  • Внутренний порт приложения: 9090.

  • Внешний порт HTTPS: 443.

  • Сеть: На хостовой системе должен быть установлен и запущен Docker Engine.

FQDN конечной панели

Приложение доступно через домен hostkey.in. Полностью квалифицированное доменное имя (FQDN) имеет следующий формат: prometheus<Server ID>.hostkey.in:443

Замените <Server ID> на конкретный идентификатор, назначенный экземпляру сервера.

Структура файлов и директорий

Для хранения данных и конфигурации развертывание использует следующую структуру каталогов:

  • Каталог данных Prometheus: /srv/prometheus

  • Каталог конфигурации Prometheus: /srv/prometheus/config

  • Конфигурация Nginx и Certbot: /root/nginx

  • Пользовательская конфигурация Nginx: /data/nginx/user_conf.d

Процесс установки приложения

Приложение развертывается как Docker-контейнер, использующий официальный образ Prometheus. Процесс установки включает следующие шаги:

  1. Убедитесь, что Docker Engine установлен и активен на хосте Ubuntu.

  2. Создайте необходимые каталоги для постоянного хранения данных и файлов конфигурации:

  3. /srv/prometheus

  4. /srv/prometheus/config

  5. Инициализируйте файл конфигурации Prometheus prometheus.yml внутри каталога конфигурации с настройками сбора данных по умолчанию.

  6. Разверните контейнер Prometheus со следующими параметрами:

  7. Образ: prom/prometheus:v3.0.0

  8. Имя контейнера: prometheus

  9. Политика перезапуска: always

  10. Порты: Отображение (маппинг) порта хоста 9090 на порт контейнера 9090.

  11. Тома (Volumes):

    • Монтирование /srv/prometheus/config/prometheus.yml в /etc/prometheus/prometheus.yml.

    • Монтирование /srv/prometheus в /prometheus для хранения временных рядов данных.

  12. Флаги командной строки:

    • --config.file=/etc/prometheus/prometheus.yml

    • --storage.tsdb.path=/prometheus

    • --web.console.libraries=/etc/prometheus/console_libraries

    • --web.console.templates=/etc/prometheus/consoles

    • --web.enable-lifecycle

Права доступа и безопасность

  • Межсетевой экран (Firewall): Хост должен разрешать входящий трафик на порт 9090 для прямого доступа к контейнеру и на порт 443 для обратного прокси-сервера.

  • Права пользователя: Каталог данных Prometheus принадлежит пользователю с ID 65534 (nobody) и группе с ID 65534.

  • Права доступа к каталогам:

  • Права доступа к каталогу данных Prometheus установлены в режиме 0775 с рекурсивным применением.

  • Права доступа к каталогу конфигурации Nginx принадлежат root:root с режимом 0755.

Docker-контейнеры и их развертывание

Система состоит из двух основных компонентов Docker: приложения Prometheus и обратного прокси-сервера Nginx с Certbot.

Контейнер Prometheus Контейнер Prometheus управляется индивидуально с использованием логики docker_container со следующими спецификациями:

  • Образ: prom/prometheus:v3.0.0

  • Состояние: Запущен с политикой перезапуска always.

  • Сеть: Открыт напрямую на сетевом интерфейсе хоста.

Контейнеры Nginx и Certbot Обратная прокси-архитектура и управление SSL-сертификатами реализованы через стек Docker Compose, расположенный по пути /root/nginx/compose.yml.

  • Сервис Nginx:

  • Образ: jonasal/nginx-certbot:latest

  • Политика перезапуска: unless-stopped

  • Режим сети: host

  • Переменные окружения:

    • CERTBOT_EMAIL: hkadm@hostkey.com
  • Тома (Volumes):

    • Внешний том nginx_secrets, смонтированный в /etc/letsencrypt.

    • Путь хоста /data/nginx/user_conf.d, смонтированный в /etc/nginx/user_conf.d.

Прокси-серверы

Доступ к панели Prometheus маршрутизируется через обратный прокси-сервер Nginx, который также обеспечивает завершение SSL-соединений (SSL termination) с использованием Let's Encrypt.

  • Конфигурация прокси: Файл конфигурации Nginx расположен по адресу /data/nginx/user_conf.d/prometheus<Server ID>.hostkey.in.conf.

  • Прокси-пропуск (Proxy Pass): Трафик перенаправляется от внешнего прослушивателя Nginx к внутреннему контейнеру Prometheus по адресу http://127.0.0.1:9090.

  • SSL/TLS: Управляется автоматически контейнером jonasal/nginx-certbot, который выпускает и обновляет сертификаты для зоны hostkey.in.

  • Пути (Paths):

  • Внутренний путь: /

  • Внешний путь: /

Настройки прав доступа

Права доступа к файлам и каталогам настроены для обеспечения безопасной работы служб:

  • /srv/prometheus и /srv/prometheus/config:

  • Владелец: 65534:65534

  • Режим: 0775 (рекурсивно для каталога данных).

  • /root/nginx:

  • Владелец: root:root

  • Режим: 0755.

  • /root/nginx/compose.yml:

  • Владелец: root:root

  • Режим: 0644.

  • /data/nginx/user_conf.d:

  • Смонтирован в контейнер Nginx; права доступа к каталогу на хосте обеспечивают возможность чтения файлов конфигурации службой Nginx.

Расположение файлов конфигурации и данных

Файл/Каталог Путь Описание
Конфигурация Prometheus /srv/prometheus/config/prometheus.yml Основной файл конфигурации, определяющий задачи сбора данных и интервалы.
Данные Prometheus /srv/prometheus Постоянное хранилище для базы данных временных рядов (TSDB).
Файл Docker Compose для Nginx /root/nginx/compose.yml Определение Docker Compose для обратного прокси-сервера.
Секреты SSL Nginx том nginx_secrets Сертификаты и ключи Let's Encrypt.
Пользовательская конфигурация Nginx /data/nginx/user_conf.d/prometheus<Server ID>.hostkey.in.conf Конфигурация виртуального хоста для домена.

Доступные порты для подключения

  • Порт 9090: Прямой доступ к веб-интерфейсу Prometheus (внутренний или доступный с хоста).

  • Порт 443: Защищенный доступ через HTTPS через обратный прокси-сервер Nginx для домена hostkey.in.

Запуск, остановка и обновление

Управление службой Prometheus

  • Запуск/Перезапуск: Управляется автоматически политикой перезапуска Docker-контейнера (always). Для ручного перезапуска контейнера используйте стандартные команды Docker (например, docker restart prometheus).

  • Остановка: Для остановки службы используйте команду docker stop prometheus.

Управление службами Nginx и Certbot Стек обратного прокси-сервера управляется через Docker Compose из каталога /root/nginx:

  • Запуск/Перезапуск:

    docker compose up -d
    
    Выполните эту команду внутри каталога /root/nginx.

  • Остановка:

    docker compose down
    

  • Обновление: Скачайте последние образы и разверните заново:

    docker compose pull && docker compose up -d
    

Для обновления версии приложения Prometheus измените тег образа в логике развертывания на желаемую версию и перезапустите контейнер.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×