Обзор развертывания Grafana на сервере¶
Предварительные требования и основные условия¶
Для успешного развертывания и эксплуатации Grafana на сервере должны быть выполнены следующие системные требования:
-
Операционная система: Совместимость с дистрибутивами Debian/Ubuntu или RHEL/CentOS.
-
Привилегии: Для управления контейнерами Docker, настройки межсетевого экрана (firewall) и прав доступа к файлам требуется административный доступ (root).
-
Домен: Система должна быть настроена для обслуживания контента в домене
hostkey.in. -
Порты:
-
На межсетевом экране должны быть открыты порты
80/tcpи443/tcpдля HTTP и HTTPS-трафика. -
Порт
3000/tcpиспользуется внутри для контейнера приложения Grafana.
FQDN конечной панели¶
Интерфейс Grafana доступен по следующему формату полнодоменного имени (Fully Qualified Domain Name, FQDN):
grafana<Server ID>.hostkey.in:443
Замените <Server ID> на конкретный идентификатор, присвоенный экземпляру хоста. Приложение работает по протоколу HTTPS на порту 443.
Структура файлов и каталогов¶
Развертывание использует определенные директории для файлов конфигурации, данных приложения и сертификатов:
-
Директория приложения:
/root/grafana -
Содержит файл
compose.yml, используемый для оркестрации контейнеров Docker. -
Конфигурация Nginx:
/data/nginx/user_conf.d -
Хранит пользовательские конфигурации блоков сервера Nginx для домена Grafana.
-
Том данных Grafana (Volume): Маппится в
/var/lib/grafanaвнутри контейнера. -
Сертификаты Let's Encrypt: Хранятся в томе
nginx_secrets, смонтированном в/etc/letsencrypt. -
Провиженинг источников данных (Datasource Provisioning): Каталог
/data/grafana/datasourcesмонтируется в/etc/grafana/provisioning/datasourcesвнутри контейнера.
Процесс установки приложения¶
Приложение разворачивается с использованием Docker Compose. Процесс установки включает следующие шаги:
-
Установка Docker: Убедитесь, что движок Docker установлен и запущен на хосте.
-
Настройка директории: Создайте директорию
/root/grafanaс правами владения root. -
Генерация файла Compose: Файл
compose.ymlгенерируется и размещается в/root/grafana/compose.yml. -
Создание тома (Volume): Создается постоянный том Docker с именем
grafana-dataдля хранения внутренних данных Grafana. -
Запуск служб: Контейнеры запускаются с помощью команды
docker compose up -d. -
Версия: Развертывание использует версию Grafana
8.2.6.
Права доступа и безопасность¶
Конфигурации безопасности применяются через межсетевой экран хоста и изоляцию контейнеров:
-
Правила межсетевого экрана (Firewall Rules):
-
На системах Debian/Ubuntu
ufw(Uncomplicated Firewall) настроен на разрешении трафика на портах80и443. -
На системах RHEL/CentOS
firewalldнастроен на разрешении80/tcpи443/tcpв зонеpublic. -
Изоляция контейнеров: Услуги работают в изолированных контейнерах Docker с определенным маппингом портов и монтированием томов.
-
SSL/TLS: Сертификаты SSL управляются автоматически через контейнер Nginx с использованием Certbot, что обеспечивает зашифрованную коммуникацию через порт
443.
Базы данных¶
Предоставленная конфигурация не включает развертывание внешней базы данных. По умолчанию Grafana использует встроенную базу данных SQLite, при этом все данные хранятся внутри тома Docker grafana-data. Внешние источники данных настраиваются через директорию /data/grafana/datasources.
Контейнеры Docker и их развертывание¶
Приложение состоит из двух основных служб, определенных в файле compose.yml:
-
nginx:
-
Образ:
jonasal/nginx-certbot:latest -
Функция: Выступает в роли обратного прокси-сервера и управляет SSL-сертификатами через Certbot.
-
Порты: Открыты
80и443для хоста. -
Тома: Монтирует
nginx_secretsдля сертификатов и/data/nginx/user_conf.dдля пользовательских конфигураций. -
grafana:
-
Образ:
grafana/grafana-oss:8.2.6 -
Функция: Запускает приложение мониторинга и визуализации Grafana.
-
Порты: Внутренний порт
3000маппится на порт хоста3000. -
Тома:
-
grafana-dataмаппится в/var/lib/grafanaдля постоянного хранения. -
/data/grafana/datasourcesмаппится в/etc/grafana/provisioning/datasourcesдля конфигурации источников данных.
-
Политика перезапуска (restart) для обоих контейнеров установлена как unless-stopped.
Прокси-серверы¶
Доступ к Grafana осуществляется через обратный прокси-сервер Nginx:
-
Программное обеспечение: Nginx с интеграцией Certbot (
jonasal/nginx-certbot). -
SSL/TLS: Включено автоматическое управление SSL-сертификатами через Let's Encrypt.
-
Конфигурация: Пользовательские правила прокси для поддомена Grafana находятся в
/data/nginx/user_conf.d/<prefix><server_id>.hostkey.in.conf. -
Маршрутизация: Прокси пересылает запросы с порта
443на внутренний сервис Grafana, работающий на порту3000.
Настройки прав доступа¶
Права доступа к файлам и директориям настроены для обеспечения надлежащего доступа контейнерам Docker и системным администраторам:
-
Директория Compose:
/root/grafanaпринадлежитroot:rootс правами0644. -
Файл Compose:
compose.ymlпринадлежитroot:rootс правами0644. -
Конфигурации Nginx: Пользовательские конфигурации в
/data/nginx/user_conf.dуправляются системой хоста и доступны контейнеру Nginx через монтирование тома.
Расположение файлов конфигурации и данных¶
Критические файлы конфигурации и данные находятся по следующим путям:
| Компонент | Путь | Описание |
|---|---|---|
| Docker Compose | /root/grafana/compose.yml | Определяет службы, сети и тома. |
| Конфигурация Nginx | /data/nginx/user_conf.d/ | Содержит блоки серверов, специфичные для домена. |
| Хранилище Grafana | Том Docker grafana-data | Внутренние данные приложения и плагины. |
| Источники данных (Datasources) | /data/grafana/datasources | Конфигурации провиженинговых источников данных. |
| SSL-сертификаты | Том Docker nginx_secrets | Хранилище сертификатов Let's Encrypt. |
Доступные порты для подключения¶
Для внешнего и внутреннего доступа настроены следующие порты:
-
443 (TCP): HTTPS-трафик для веб-интерфейса Grafana (внешний доступ).
-
80 (TCP): HTTP-трафик, используемый для валидации SSL-сертификатов и перенаправления (внешний доступ).
-
3000 (TCP): Прямой внутренний доступ к контейнеру Grafana (не предназначен для прямого внешнего доступа в продакшн-среде без прокси).
Запуск, остановка и обновление¶
Управление службами осуществляется через команды Docker Compose, выполняемые из директории /root/grafana.
-
Запуск служб:
-
Остановка служб:
-
Перезапуск служб:
-
Просмотр логов:
Для обновления версии приложения измените тег образа в файле compose.yml и перезапустите службы.