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

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

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

Для корректной работы системы на сервере должны быть выполнены следующие условия:

  • Операционная система Ubuntu.

  • Установленный и работающий демон Docker.

  • Права доступа пользователя root для управления контейнерами и файловой системой.

  • Открытые порты для доступа к веб-интерфейсу Prometheus и прокси-серверу.

  • Наличие доменного имени для настройки SSL-сертификатов через Certbot.

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

Конфигурация и данные приложения распределены по следующим директориям:

  • /root/nginx — каталог для запуска контейнеров прокси-сервера и управления сертификатами.

  • /root/nginx/compose.yml — файл конфигурации Docker Compose для Nginx и Certbot.

  • /data/nginx — хранилище конфигурационных файлов и переменных окружения.

  • /data/nginx/nginx-certbot.env — файл переменных окружения для сервиса Nginx.

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

  • /data/nginx/user_conf.d/<prefix><server_id>.hostkey.in.conf — файл конфигурации конкретного хоста с настройками проксирования.

  • /etc/prometheus (внутри контейнера) — точка монтирования конфигурации Prometheus.

  • /prometheus (внутри контейнера) — точка монтирования данных временной базы данных Prometheus.

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

Развертывание осуществляется через Docker-контейнеры. Процесс включает установку Docker, создание необходимых директорий и запуск сервисов.

Установка Docker

На сервере выполняется установка и настройка Docker через роль docker-managed-install.

Настройка Prometheus

  1. Создаются директории для данных и конфигурации Prometheus.

  2. Генерируется файл конфигурации prometheus.yml с настройками сбора метрик.

  3. Запускается контейнер Prometheus с образом prom/prometheus.

Настройка Nginx и Certbot

  1. Создается каталог /root/nginx.

  2. Генерируется файл compose.yml в директории /root/nginx.

  3. Обновляется конфигурация Nginx в файле /data/nginx/user_conf.d/<prefix><server_id>.hostkey.in.conf:

  4. Удаляется существующая строка proxy_pass.

  5. Добавляется новая строка proxy_pass http://127.0.0.1:9090; внутри блока location /.

  6. Запускаются контейнеры Nginx и Certbot через Docker Compose.

Контейнеры Docker и их запуск

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

Контейнер Prometheus

Запускается с использованием следующих параметров:

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

  • Образ: prom/prometheus.

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

  • Порт: маппинг локального порта на 9090 внутри контейнера.

  • Монтирование томов:

  • Конфигурация: {{ prometheus_config_dir }}/prometheus.yml на /etc/prometheus/prometheus.yml.

  • Данные: {{ prometheus_data_dir }} на /prometheus.

  • Команда запуска включает параметры конфигурации файла, пути к хранилищу и включение жизненного цикла веб-интерфейса.

Контейнер Nginx-Certbot

Управляется через файл compose.yml в директории /root/nginx.

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

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

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

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

  • CERTBOT_EMAIL=hkadm@hostkey.com.

  • Дополнительные переменные из файла /data/nginx/nginx-certbot.env.

  • Монтирование томов:

  • Внешний том nginx_secrets на /etc/letsencrypt для хранения сертификатов.

  • Директория /data/nginx/user_conf.d на /etc/nginx/user_conf.d для пользовательских конфигов.

Базы данных

Сервис Prometheus использует встроенную временную базу данных (Time Series Database).

  • Данные хранятся в директории, смонтированной в контейнере по пути /prometheus.

  • Конфигурация сбора метрик указывает на цель localhost:9090 для сбора собственных метрик Prometheus.

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

Настройка прав доступа к файлам и директориям выполнена следующим образом:

  • Директория /root/nginx имеет владельца root и группу root с правами 0755.

  • Файл compose.yml имеет права 0644.

  • Директории для данных Prometheus имеют владельца и группу с ID 65534 (обычно nobody) и права 0775 с рекурсивным применением.

  • Конфигурационные файлы Nginx в /data/nginx/user_conf.d модифицируются скриптом развертывания для установки правил проксирования.

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

Управление сервисами осуществляется через команды Docker и Docker Compose.

Запуск Nginx и Certbot

Для запуска контейнеров прокси-сервера используется команда:

docker compose up -d
Команда выполняется из директории /root/nginx.

Управление Prometheus

Контейнер Prometheus управляется стандартными командами Docker:

  • Запуск: docker start prometheus

  • Остановка: docker stop prometheus

  • Перезапуск: docker restart prometheus

Обновление конфигурации требует перезапуска соответствующих контейнеров после изменения файлов в директориях /root/nginx или /data/nginx.

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