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

Обзор развертывания 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.

Запуск контейнеров выполняется командой:

docker compose up -d
в директории /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:

  • Запуск всех сервисов:

    docker compose up -d
    

  • Остановка всех сервисов:

    docker compose down
    

  • Обновление образов и перезапуск:

    docker compose pull
    docker compose up -d
    

  • Сброс пароля администратора Grafana (выполняется автоматически при развертывании, но может быть выполнен вручную):

    docker exec -i grafana-grafana-1 grafana-cli admin reset-admin-password <пароль>
    

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