Обзор развертывания 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.