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

Обзор развертывания 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
ИИ Помощник ×