Гид по технологиям

Запуск Grafana в Docker: образ, контейнер и конфигурация

8 min read Мониторинг. Обновлено 02 Dec 2025
Запуск Grafana в Docker для DevOps
Запуск Grafana в Docker для DevOps

Логотип Grafana

Быстрые ссылки

  • Введение и старт
  • Выбор варианта образа
  • Создание контейнера
  • Передача конфигурации
  • Замена файла конфигурации
  • Управление плагинами
  • Создание кастомного образа
  • Резюме

Введение и старт

Grafana — ведущая платформа для визуализации метрик и мониторинга. Она позволяет собирать метрики, строить дашборды и получать оповещения по событиям в реальном времени. Grafana хорошо запускается как в облаке, так и в контейнерах. В этом руководстве мы фокусируемся на запуске официального образа Grafana в Docker.

Короткий пример для быстрого старта:

docker run -d --name=grafana -p 3000:3000 grafana/grafana

Скриншот запуска Docker-контейнера Grafana

После запуска сервер будет доступен на порту 3000. Перейдите по адресу http://localhost:3000 и выполните вход с учётными: admin / admin.

Скриншот панели Grafana после установки

Далее добавьте источники данных и создайте дашборды. Нажмите «Add your first data source» на главной странице, выберите поставщика и укажите параметры доступа.

Скриншот добавления источника данных Prometheus в Grafana

Вернитесь на главную и выберите «Create your first dashboard». Выберите тип визуализации и составьте запрос для выбранного источника данных. После сохранения визуализация появится на дашборде.

Скриншот пустого дашборда Grafana

Важно: данный быстрый старт хорош для тестов и локальной разработки. Для продакшена применяйте дополнительные меры безопасности и резервного копирования.

Выбор варианта образа

Grafana выпускается в двух основных вариантах: открытая редакция и Enterprise. На Docker Hub их обозначают так:

  • grafana/grafana — открытая редакция
  • grafana/grafana-enterprise — Enterprise

Каждая версия доступна в вариантах на базе Alpine или Ubuntu. Alpine легче и обычно предпочтительнее для контейнерных развёртываний: у него меньше слоёв и меньше уязвимостей, связанных с ненужными пакетами.

Тег образа формируется как grafana/grafana:<версия>-:

grafana/grafana:8.3.0-ubuntu

Рекомендация: всегда фиксируйте конкретную версию (8.3.0), чтобы избежать неожиданных несовместимостей при автоматических обновлениях. Если опустить суффикс ОС (grafana/grafana:8.3.0), по умолчанию будет Alpine-версия.

Создание контейнера

Для стабильной работы Grafana в контейнере обычно нужны три вещи:

  1. Проброшенный порт для доступа (по умолчанию 3000).
  2. Постоянный том для хранения данных Grafana.
  3. Способ передачи настроек (переменные окружения или конфиг-файл).

Пример запуска для долгосрочного использования:

docker run -d --name grafana -p 9000:3000 -v grafana-data:/var/lib/grafana grafana/grafana:8.3.0

Разбор:

  • Контейнер называется grafana.
  • Порт хоста 9000 проброшен на 3000 контейнера.
  • Том grafana-data хранит каталоги Grafana, что защищает данные при перезапуске контейнера.

Совет: используйте docker volumes (а не bind-mount на хосте) для удобства и переносимости, если нет специальных требований к файловой структуре.

Передача конфигурации через переменные окружения

Grafana поддерживает переопределение ключей конфигурации через переменные окружения. Правило простое: возьмите ключ из INI-файла, сделайте его заглавными и добавьте префикс GF_.

Пример INI:

# INI file

instance_name = my-grafana

[security]
admin_user = demo
admin_password = grafana

Соответствующие переменные окружения:

GF_DEFAULT_INSTANCE_NAME=my-grafana
GF_SECURITY_ADMIN_USER=demo
GF_SECURITY_ADMIN_PASSWORD=grafana

Для передачи через docker run используйте -e:

docker run -d --name grafana -p 9000:3000 \
  -e GF_DEFAULT_INSTANCE_NAME=my-grafana \
  -e GF_SECURITY_ADMIN_USER=demo \
  -e GF_SECURITY_ADMIN_PASSWORD=grafana \
  -v grafana-data:/var/lib/grafana \
  grafana/grafana:8.3.0

Примечание: при изменении топ-уровневых параметров инI-файла включайте в имя секции слово DEFAULT (пример выше).

Файловая (file-based) конфигурация и секреты

Для секретов предпочтительнее передавать значения через файлы. Для этого реализовано соглашение с суффиксом __FILE: значение переменной — путь к файлу внутри контейнера. Grafana прочитает содержимое файла и использует его как значение.

Пример использования Docker Secrets или bind-монта:

docker run -d --name grafana -p 9000:3000 \
  -e GF_DEFAULT_INSTANCE_NAME=my-grafana \
  -e GF_SECURITY_ADMIN_USER=demo \
  -e GF_SECURITY_ADMIN_PASSWORD__FILE=/run/secrets/password \
  -v grafana-data:/var/lib/grafana \
  grafana/grafana:8.3.0

Файл пароля можно смонтировать так: -v ./password.txt:/run/secrets/password или хранить в менеджере секретов Docker.

Преимущество: пароль не попадает в логи CI/CD или историю комманд shell.

Замена файла конфигурации

Если вам нужно изменить много параметров — проще подменить весь файл конфигурации. В образе он расположен по пути /etc/grafana/grafana.ini.

Пример bind-mount:

docker run -d --name grafana -p 9000:3000 \
  -v ./grafana.ini:/etc/grafana/grafana.ini \
  -v grafana-data:/var/lib/grafana \
  grafana/grafana:8.3.0

Плюсы использования файла:

  • Легко документировать через комментарии.
  • Удобно хранить в репозитории конфигураций.
  • Можно использовать шаблонизацию при сборке образа.

Важно: сохраняйте резервные копии файла и версионируйте изменения.

Управление плагинами

Grafana поддерживает плагины для дополнительных датасорсов и панелей. Официальный образ предоставляет механизм установки плагинов при первом запуске через переменную GF_INSTALL_PLUGINS.

Пример установки официального плагина:

docker run -d --name grafana -p 9000:3000 \
  -e GF_INSTALL_PLUGINS=grafana-simple-json-datasource \
  -v grafana-data:/var/lib/grafana \
  grafana/grafana:8.3.0

Можно перечислять плагины через запятую. Поддерживаются версии и внешние URL:

docker run -d --name grafana -p 9000:3000 \
  -e GF_INSTALL_PLUGINS=grafana-simple-json-datasource:1.1.0,https://example.com/grafana-plugin.zip \
  -v grafana-data:/var/lib/grafana \
  grafana/grafana:8.3.0

Замечание: установка происходит при первом старте контейнера. Для уже развернутых контейнеров можно установить плагин вручную через grafana-cli или собрать новый образ с предустановленными плагинами.

Создание кастомного образа

Если вы часто развертываете Grafana с похожими настройками, удобнее собрать собственный образ на базе официального. Это повышает воспроизводимость и ускоряет деплой.

Dockerfile-пример:

FROM grafana/grafana:8.3.0

# Установим плагины
ENV GF_INSTALL_PLUGINS=grafana-simple-json-datasource

# Копируем локальный конфиг
COPY grafana.ini /etc/grafana/grafana.ini

Сборка образа:

docker build -t custom-grafana:latest .

Запуск собранного образа:

docker run -d --name grafana -p 9000:3000 \
  -v grafana-data:/var/lib/grafana \
  custom-grafana:latest

Плюсы кастомного образа:

  • Быстрая и детерминированная настройка.
  • Централизация конфигураций для команды.
  • Возможность включить плагины на этапе сборки.

Минус: при выходе новой версии Grafana нужно пересобирать образ и тестировать обновления.

Пример docker-compose

Для удобства развёртывания в командной среде можно использовать docker-compose:

version: '3.7'
services:
  grafana:
    image: grafana/grafana:8.3.0
    ports:
      - "9000:3000"
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD__FILE=/run/secrets/grafana_admin_password
      - GF_INSTALL_PLUGINS=grafana-simple-json-datasource
    volumes:
      - grafana-data:/var/lib/grafana
      - ./grafana.ini:/etc/grafana/grafana.ini:ro
    networks:
      - monitoring

volumes:
  grafana-data:

networks:
  monitoring:
    driver: bridge

Используйте Docker Secrets для паролей в продакшене.

Резервное копирование и восстановление

Ключевые данные Grafana хранятся в каталоге /var/lib/grafana. Для резервного копирования:

  • Сделайте дамп тома: docker run --rm -v grafana-data:/data -v $(pwd):/backup alpine tar czf /backup/grafana-data.tgz -C /data .
  • Или синхронизируйте содержимое тома на внешний бэкап-канал.

Восстановление: распакуйте архив в новый или существующий том перед стартом контейнера.

Критерии приёмки:

  • Сервис доступен по назначенному порту.
  • Источники данных подключаемы и возвращают метрики.
  • Сохранённые дашборды и настройки присутствуют после перезапуска.

Обновления и миграции

Процесс обновления образа обычно включает следующие шаги:

  1. Извлечь список кастомных настроек и плагинов.
  2. Подтянуть новый официальный образ: docker pull grafana/grafana:<новая-версия>.
  3. Пересобрать кастомный образ, если он есть.
  4. Протестировать миграцию на стейджинг-окружении.
  5. Перезапустить контейнеры в продакшене.

Храните миграции схемы и бэкапы перед обновлением.

Безопасность и харднинг

Рекомендации по безопасности при развёртывании Grafana в Docker:

  • Не храните админ-пароли в открытом виде. Используйте Docker Secrets или внешние хранилища.
  • Запускайте Grafana за обратным прокси с TLS (например, Traefik, Nginx, Apache).
  • Ограничьте доступ к порту управления только доверенным сетям.
  • Следите за версиями плагинов и обновляйте их.
  • Примите политику RBAC для пользователей и применяйте аудит действий.
  • По возможности запускайте контейнер с непривилегированным пользователем.

Конфиденциальность и соответствие требованиям

Grafana может сохранять данные, содержащие персональные сведения (например, метки, имена хостов с PII). Для соответствия требованиям защиты данных:

  • Минимизируйте передачу персональных данных в метриках.
  • Обеспечьте шифрование каналов (TLS) и контроль доступа.
  • При необходимости реализуйте политику хранения и удаления данных.

Совет: проконсультируйтесь с командой по защите данных, если в метриках присутствует PII.

Когда этот подход не подходит

  • Если вам нужна управляемая SaaS-версия с автоматическими обновлениями и масштабированием, рассмотрите Grafana Cloud.
  • Если инфраструктура требует кластера с высокой доступностью на уровне приложения, контейнер на одном хосте может не подойти. Запускайте Grafana в оркестраторе (Kubernetes) с настройками HA и внешней базой данных.

Альтернативные подходы

  • Оркестрация в Kubernetes с Helm-чартом Grafana для масштабирования и управления секретами.
  • Развёртывание на виртуальной машине с системными пакетами для интеграции с существующей системой управления конфигурацией.
  • Использование Grafana Cloud как SaaS-альтернатива.

Практическое руководство: быстрый playbook для команды

Шаги для безопасного развёртывания Grafana в Docker (SOP):

  1. Подготовьте том: docker volume create grafana-data.
  2. Подготовьте секреты: сохраните пароль в Docker Secrets или в зашифрованном хранилище.
  3. Создайте grafana.ini с необходимыми настройками и сохраните в репозитории конфигураций.
  4. Соберите кастомный образ при необходимости.
  5. Разверните контейнер через docker-compose или systemd unit для автоматического рестарта.
  6. Настройте обратный прокси и TLS.
  7. Настройте мониторинг Grafana (используйте внешний Prometheus).
  8. Запланируйте регулярные бэкапы тома.

Чек-лист по ролям

Для DevOps:

  • Создать и защищать том для данных.
  • Настроить резервное копирование.
  • Обеспечить TLS и доступ через прокси.

Для инженера платформы:

  • Автоматизировать сборку кастомного образа.
  • Обновлять и тестировать новые версии.

Для владельца приложения:

  • Проверить источники данных и доступы.
  • Настроить уведомления и роли пользователей.

Decision flowchart

flowchart TD
  A[Нужно быстро протестировать Grafana?] -->|Да| B[Запустить официальный образ локально]
  A -->|Нет| C[Требуются долговременные/продакшн требования]
  C --> D{Нужна высокая доступность?}
  D -->|Да| E[Развернуть в Kubernetes с Helm]
  D -->|Нет| F[Развернуть Docker на хосте с томом и обратным прокси]
  E --> G[Использовать внешнюю БД и PVC]
  F --> H[Собрать кастомный образ + секреты]

Примеры тест-кейсов и критерии приёмки

Тест-кейсы:

  • Установка и первичный вход по admin/admin.
  • Подключение источника Prometheus и получение метрик.
  • Сохранение и восстановление дашборда после перезапуска контейнера.
  • Установка и проверка плагина через GF_INSTALL_PLUGINS.

Критерии приёмки:

  • Grafana отвечает на HTTP-запросы на назначенном порту.
  • Дашборды отображаются и метрики обновляются.
  • Плагины установлены и доступны.
  • Резервное копирование/восстановление проходит без потери данных.

Полезные сниппеты и шаблоны

Docker run с file-based секретом:

docker run -d --name grafana -p 9000:3000 \
  -e GF_SECURITY_ADMIN_PASSWORD__FILE=/run/secrets/grafana_admin_password \
  -v grafana-data:/var/lib/grafana \
  -v ./grafana.ini:/etc/grafana/grafana.ini:ro \
  grafana/grafana:8.3.0

Пример восстановления из архива:

docker run --rm -v grafana-data:/data -v $(pwd):/backup alpine sh -c "cd /data && tar xzf /backup/grafana-data.tgz"

Частые ошибки и способы их устранения

  • Проблема: не сохраняются дашборды после перезапуска. Причина: отсутствует монтирование тома /var/lib/grafana. Решение: добавьте -v grafana-data:/var/lib/grafana.
  • Проблема: плагин не устанавливается. Причина: попытка установить плагин уже работающему контейнеру без пересоздания. Решение: пересоздайте контейнер или установите через grafana-cli внутри контейнера.
  • Проблема: секреты попали в CI-логи. Причина: использование открытых переменных окружения. Решение: применяйте file-based конфигурацию или Docker Secrets.

Миграционные подсказки

  • Перед обновлением сделайте полный бэкап тома.
  • Тестируйте миграцию на отпечатанном окружении.
  • Если используете кастомный образ, следите за совместимостью плагинов.

Заключение

Docker делает развёртывание Grafana быстрым и удобным. Для разработки подойдёт простой docker run, а для продакшена используйте:

  • фиксированный образ и версию,
  • смонтированные тома для данных,
  • безопасные способы передачи секретов (Docker Secrets или file-based),
  • обратный прокси с TLS и разграничение доступа.

Важно: автоматизируйте сборку и обновление кастомных образов, планируйте бэкапы и тестируйте обновления на стейджинге, чтобы избегать простоев в продакшене.

Резюме:

  • Быстрый старт: docker run grafana/grafana.
  • Продакшен: томы, секреты, TLS, бэкапы и CI для сборки образов.
  • Для высоких требований — оркестрация в Kubernetes.

Подробные команды и примеры конфигураций приведены выше. Следуйте чек-листу и критериям приёмки перед выпуском в продакшен.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство