Обзор развертывания 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. Процесс установки включает следующие шаги:
-
Убедитесь, что Docker Engine установлен и активен на хосте Ubuntu.
-
Создайте необходимые каталоги для постоянного хранения данных и файлов конфигурации:
-
/srv/prometheus -
/srv/prometheus/config -
Инициализируйте файл конфигурации Prometheus
prometheus.ymlвнутри каталога конфигурации с настройками сбора данных по умолчанию. -
Разверните контейнер Prometheus со следующими параметрами:
-
Образ:
prom/prometheus:v3.0.0 -
Имя контейнера:
prometheus -
Политика перезапуска:
always -
Порты: Отображение (маппинг) порта хоста
9090на порт контейнера9090. -
Тома (Volumes):
-
Монтирование
/srv/prometheus/config/prometheus.ymlв/etc/prometheus/prometheus.yml. -
Монтирование
/srv/prometheusв/prometheusдля хранения временных рядов данных.
-
-
Флаги командной строки:
-
--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) и группе с ID65534. -
Права доступа к каталогам:
-
Права доступа к каталогу данных 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:
-
Запуск/Перезапуск:
Выполните эту команду внутри каталога/root/nginx. -
Остановка:
-
Обновление: Скачайте последние образы и разверните заново:
Для обновления версии приложения Prometheus измените тег образа в логике развертывания на желаемую версию и перезапустите контейнер.