Обзор развертывания Grafana на сервере¶
Предварительные требования¶
Для корректной работы приложения необходимо наличие следующих условий:
-
Операционная система на базе Debian, Ubuntu или RHEL.
-
Установленный и настроенный брандмауэр (UFW для Debian/Ubuntu или Firewalld для RHEL).
-
Открытые порты для входящего трафика:
-
Порт
22/tcpдля доступа по SSH (настраивается вручную или через UFW). -
Порт
80/tcpдля HTTP-трафика. -
Порт
443/tcpдля HTTPS-трафика. -
Доступ к интернету для скачивания образов Docker и получения SSL-сертификатов.
Структура файлов и каталогов¶
Конфигурация и данные приложения размещаются в следующих директориях:
-
/root/grafana— рабочая директория для запуска контейнеров, содержит файлcompose.yml. -
/data/nginx/user_conf.d— каталог с пользовательскими конфигурациями Nginx. -
/data/nginx/nginx-certbot.env— файл переменных окружения для сервиса Nginx и Certbot. -
/data/grafana/datasources— каталог для файлов провизининга источников данных Grafana. -
/etc/letsencrypt— точка монтирования для хранения SSL-сертификатов (через томnginx_secrets). -
/var/lib/grafana— точка монтирования для хранения данных Grafana (через томgrafana-data).
Процесс установки приложения¶
Развертывание осуществляется с использованием Docker и Docker Compose. Процесс включает следующие этапы:
-
Установка Docker на сервере.
-
Подготовка конфигурации прокси-сервера Nginx с поддержкой Certbot.
-
Создание директории
/root/grafanaс правами доступа для пользователяroot. -
Генерация файла
compose.ymlв директории/root/grafana. -
Создание внешнего тома Docker
grafana-dataдля хранения данных. -
Запуск контейнеров через команду
docker compose up -d. -
Ожидание готовности сервиса в течение 60 секунд.
-
Сброс пароля администратора Grafana на значение, совпадающее с паролем SSH-доступа.
Контейнеры Docker и их запуск¶
Приложение состоит из двух контейнеров, описанных в файле compose.yml:
-
Сервис nginx:
-
Образ:
jonasal/nginx-certbot:latest. -
Политика перезапуска:
unless-stopped. -
Порты:
80:80и443:443. -
Переменные окружения:
CERTBOT_EMAIL=hkadm@hostkey.com. -
Файл переменных:
/data/nginx/nginx-certbot.env. -
Тома:
-
nginx_secretsмонтируется в/etc/letsencrypt. -
/data/nginx/user_conf.dмонтируется в/etc/nginx/user_conf.d.
-
-
Сервис grafana:
-
Образ:
grafana/grafana-oss(вердина определяется переменнойhk_grafana_ver). -
Политика перезапуска:
unless-stopped. -
Порты:
3000:3000. -
Тома:
-
/data/grafana/datasourcesмонтируется в/etc/grafana/provisioning/datasources. -
grafana-dataмонтируется в/var/lib/grafana.
-
Запуск контейнеров выполняется командой:
в директории/root/grafana. Прокси серверы¶
В качестве прокси-сервера используется контейнер Nginx с встроенным Certbot для автоматического получения и обновления SSL-сертификатов.
-
Доменное имя и конфигурация проксирования настраиваются в файле
/data/nginx/user_conf.d/<prefix><server_id>.<zone>.conf. -
В конфигурации Nginx параметр
proxy_passуказывает на внутренний адрес сервиса Grafana:http://<prefix>:3000. -
Сертификаты хранятся в томе
nginx_secrets, который монтируется в/etc/letsencrypt.
Права доступа и безопасность¶
-
Директория
/root/grafanaсоздается с владельцемrootи группойroot, права доступа0644. -
Файл
compose.ymlсоздается с владельцемrootи группойroot, права доступа0644. -
Для систем на базе RHEL через
firewalldоткрываются порты80/tcpи443/tcpв зонеpublicс постоянным режимом (permanent: true). -
Для систем на базе Debian/Ubuntu через
ufwоткрываются порты22/tcp,80/tcpи443/tcp. -
Процесс
unattended-upgrпринудительно завершается перед развертыванием на системах Debian/Ubuntu.
Запуск, остановка и обновление¶
Управление контейнерами осуществляется через Docker Compose в директории /root/grafana:
-
Запуск всех сервисов:
-
Остановка всех сервисов:
-
Обновление образов и перезапуск:
-
Сброс пароля администратора Grafana (выполняется автоматически при развертывании, но может быть выполнен вручную):