Перейти к содержанию

Обзор развертывания 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. Процесс установки включает следующие шаги:

  1. Установка Docker: Убедитесь, что движок Docker установлен и запущен на хосте.

  2. Настройка директории: Создайте директорию /root/grafana с правами владения root.

  3. Генерация файла Compose: Файл compose.yml генерируется и размещается в /root/grafana/compose.yml.

  4. Создание тома (Volume): Создается постоянный том Docker с именем grafana-data для хранения внутренних данных Grafana.

  5. Запуск служб: Контейнеры запускаются с помощью команды docker compose up -d.

  6. Версия: Развертывание использует версию 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.

  • Запуск служб:

    cd /root/grafana
    docker compose up -d
    

  • Остановка служб:

    cd /root/grafana
    docker compose down
    

  • Перезапуск служб:

    cd /root/grafana
    docker compose restart
    

  • Просмотр логов:

    cd /root/grafana
    docker compose logs -f grafana
    

Для обновления версии приложения измените тег образа в файле compose.yml и перезапустите службы.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×