Обзор развертывания 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¶
- Создаются директории для данных и конфигурации Prometheus.
- Генерируется файл конфигурации
prometheus.ymlс настройками сбора метрик. - Запускается контейнер Prometheus с образом
prom/prometheus.
Настройка Nginx и Certbot¶
- Создается каталог
/root/nginx. - Генерируется файл
compose.ymlв директории/root/nginx. - Обновляется конфигурация Nginx в файле
/data/nginx/user_conf.d/<prefix><server_id>.hostkey.in.conf: - Удаляется существующая строка
proxy_pass. - Добавляется новая строка
proxy_pass http://127.0.0.1:9090;внутри блокаlocation /. - Запускаются контейнеры 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¶
Для запуска контейнеров прокси-сервера используется команда:
Команда выполняется из директории/root/nginx. Управление Prometheus¶
Контейнер Prometheus управляется стандартными командами Docker: - Запуск: docker start prometheus - Остановка: docker stop prometheus - Перезапуск: docker restart prometheus
Обновление конфигурации требует перезапуска соответствующих контейнеров после изменения файлов в директориях /root/nginx или /data/nginx.