Обзор развертывания 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. Процесс включает следующие этапы: 1. Установка Docker на сервере. 2. Подготовка конфигурации прокси-сервера Nginx с поддержкой Certbot. 3. Создание директории /root/grafana с правами доступа для пользователя root. 4. Генерация файла compose.yml в директории /root/grafana. 5. Создание внешнего тома Docker grafana-data для хранения данных. 6. Запуск контейнеров через команду docker compose up -d. 7. Ожидание готовности сервиса в течение 60 секунд. 8. Сброс пароля администратора 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: - Запуск всех сервисов: