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

Развёртывание Grafana в Docker

8 min read Мониторинг. Обновлено 20 Dec 2025
Grafana в Docker — развертывание и настройка
Grafana в Docker — развертывание и настройка

Логотип Grafana

  • Быстрый запуск: docker run -d –name=grafana -p 3000:3000 grafana/grafana. По умолчанию вход admin/admin.
  • Для продакшена: смонтируйте том для /var/lib/grafana, задавайте конфиг через переменные окружения или файл, фиксируйте тег образа и используйте собственный образ при необходимости.
  • Плагины устанавливаются через переменную GF_INSTALL_PLUGINS; секреты — через переменные с суффиксом __FILE или Docker Secrets.

Краткое содержание

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

Важно: всегда закрепляйте (pin) конкретную версию образа и держите данные вне контейнера (томы). Это снижает риск неожиданного обновления и потери данных.

Зачем запускать Grafana в Docker

Grafana — мощная платформа визуализации метрик и мониторинга. Docker даёт вам изолированную, воспроизводимую среду: единообразный запуск на локальной машине, CI или на серверах. Контейнеризация упрощает тестирование, масштабирование и доставку конфигурации команде.

Кому это полезно:

  • Разработчики — быстро поднять тестовую Grafana
  • Инженеры мониторинга — воспроизводить окружения
  • DevOps — автоматизировать сборку и развёртывание
  • SRE — включать Grafana в поток CI/CD

Быстрый старт

Самый простой способ запустить временный экземпляр Grafana:

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

После запуска сервер доступен по адресу http://localhost:3000. По умолчанию логин: admin, пароль: admin. Сразу после первого входа система предложит сменить пароль.

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

Обычно далее вы добавляете источник данных и создаёте панель (дашборд). На главной странице нажмите «Add your first data source», выберите провайдера и введите параметры подключения.

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

Для создания панели вернитесь на главную и нажмите «Create your first dashboard», затем выберите тип визуализации и сформируйте запрос к источнику.

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

Эти действия демонстрируют, как легко поднять тестовый экземпляр. Для продуктивного использования потребуется дополнительная конфигурация безопасности, резервного копирования данных и опции обновлений.

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

Grafana публикует несколько образов:

  • grafana/grafana — открытая редакция (OSS)
  • grafana/grafana-enterprise — коммерческая редакция (Enterprise)

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

Тег образа выбирают так:

grafana/grafana:8.3.0-ubuntu

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

grafana/grafana:8.3.0

Создание контейнера: тома, порты и базовая конфигурация

Для долговременного использования нужно:

  • Смонтировать том для хранения данных Grafana (/var/lib/grafana).
  • Привязать порт из контейнера (3000) к порту хоста.
  • Передать переменные окружения или снабдить контейнер конфигурационным файлом.

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

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

Пояснения:

  • -p 9000:3000 — пробрасывает порт 3000 контейнера на порт 9000 хоста (можно выбирать любой свободный порт).
  • -v grafana-data:/var/lib/grafana — Docker-том, где Grafana хранит базы данных, сессии и дашборды.
  • grafana/grafana:8.3.0 — закреплённый образ.

Том гарантирует, что при удалении или обновлении контейнера данные останутся доступными.

Встраивание конфигурации через переменные окружения

Grafana позволяет переопределять параметры конфигурации через переменные окружения. Синтаксис: GF<РАЗДЕЛ><ПАРАМЕТР>, где раздeл и параметр — имена из ini-файла в заглавных буквах, а точки/пробелы заменяются подчеркиванием.

Пример соответствия INI и переменных:

# INI файл
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

Обратите внимание: для топ-уровневых (глобальных) параметров в имени переменной включается DEFAULT.

Передача переменных при запуске:

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

Безопасная передача секретов

Чтобы не хранить секреты в явном виде в логах CI или в истории команд, используйте механизм файловых переменных: переменная с суффиксом __FILE указывает путь к файлу внутри контейнера. Grafana прочитает значение из этого файла.

Пример:

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

Файл можно смонтировать через bind mount или использовать Docker Secrets (или аналог в вашей оркестрации). Это защищает пароли от попадания в логи.

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

Если нужно изменить много параметров, удобнее заменить весь конфиг. Стандартный путь внутри образа:

/etc/grafana/grafana.ini

Пример монтирования собственного файла:

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

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

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

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

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

Многие установки требуют плагины — источники, панели и утилиты. Для автоматической установки при первом запуске контейнера используйте переменную 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 с длинным списком флагов неудобно, создайте Dockerfile, который расширяет официальный образ и инкапсулирует конфигурацию и плагины.

Пример 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

Преимущества собственного образа:

  • Централизация конфигурации для команды
  • Быстрая репликация среды
  • Удобство CI/CD: храните Dockerfile в репозитории

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

Скриншот сборки кастомного образа Grafana

Рекомендации по безопасности и эксплуатации

  • Меняйте пароль admin сразу после первого запуска.
  • Используйте внешнюю базу данных (если требуется масштабирование) вместо встроенной sqlite.
  • Запускайте Grafana за обратным прокси (nginx, Traefik) для TLS и аутентификации с помощью внешних провайдеров (OAuth, LDAP).
  • Ограничьте доступ по сети (firewall, security groups) — открывайте порт только для доверенных источников или через VPN.
  • Делайте регулярные бэкапы тома grafana-data и экспортируйте дашборды в репозиторий.

Тестирование и критерии приёмки

Критерии приёмки перед переводом в продакшн:

  • Контейнер успешно стартует и отвечает на / (порт проброшен).
  • Источники данных добавляются и проходят тест соединения.
  • Дашборды загружаются и отображают метрики.
  • Плагины установлены при старте (если нужно).
  • Секреты не присутствуют в логах или истории CI.

Тест-кейсы:

  1. Запуск контейнера с монтированием тома: данные сохраняются после удаления контейнера.
  2. Замена grafana.ini через bind mount: конфигурация применяется после перезапуска.
  3. Передача пароля через __FILE: пароль не виден в docker inspect без доступа к файлу.
  4. Установка плагина через GF_INSTALL_PLUGINS: плагин появился в интерфейсе.

Резервные стратегии и откат

Сценарий отката при неудачного обновления образа:

  1. Остановить новый контейнер.
  2. Запустить старую версию образа с тем же томом: docker run -d –name grafana-old -p 9000:3000 -v grafana-data:/var/lib/grafana grafana/grafana:<предыдущий-тег>
  3. Проверить целостность данных и функциональность.
  4. Если необходимо — восстановить бэкап тома до состояния перед обновлением.

Важно иметь план бэкапов и регламент обновлений.

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

Сетевой инженер / DevOps

  • Закрепить теги образов.
  • Настроить CI для автоматической сборки custom-образа.
  • Настроить прокси и TLS.

Инженер мониторинга

  • Добавить источники данных и протестировать запросы.
  • Экспортировать дашборды в репозиторий (JSON).
  • Настроить оповещения и проверку их доставки.

Администратор безопасности

  • Обеспечить защиту секретов (Docker Secrets или KMS).
  • Настроить RBAC внутри Grafana (пользователи/роли).
  • Проверить логи и аудит.

Быстрый справочник (cheat sheet)

Переменные окружения:

  • GF_SECURITY_ADMIN_USER — пользователь администратора
  • GF_SECURITY_ADMIN_PASSWORD — пароль (или GF_SECURITY_ADMIN_PASSWORD__FILE)
  • GF_INSTALL_PLUGINS — список плагинов для установки
  • GF_DEFAULT_INSTANCE_NAME — имя инстанса

Где хранятся данные:

  • /var/lib/grafana — база данных и дашборды
  • /etc/grafana/grafana.ini — основной конфиг

Команды восстановления:

  • docker logs — посмотреть лог запуска
  • docker exec -it /bin/bash — доступ в контейнер (если есть шелл)

Когда контейнеры не подходят (альтернативы)

  • Kubernetes: если требуется масштабирование, автозапуск и управление количеством реплик.
  • Управляемые SaaS Grafana Cloud: если вы не хотите управлять инфраструктурой.
  • Виртуальная машина: если нужна отдельная изолированная среда с нестандартными зависимостями.

Дерево решений для выбора варианта развёртывания

flowchart TD
  A[Нужно быстро протестировать Grafana?] -->|Да| B[Запуск в Docker]
  A -->|Нет| C[Нужен продакшен]
  C --> D[Требуется масштабирование]
  D -->|Да| E[Kubernetes]
  D -->|Нет| F[Docker + обратный прокси]
  C --> G[Не хотите управлять инфраструктурой]
  G -->|Да| H[Grafana Cloud / SaaS]
  G -->|Нет| F

Миграция и совместимость

  • При переходе между версиями проверьте изменения в конфиге grafana.ini и в плагинах; иногда интерфейс плагинов меняется.
  • Если вы используете встроенную sqlite базу, для больших нагрузок переходите на PostgreSQL или MySQL.
  • При смене образа всегда тестируйте в staging перед пробросом в production и сохраняйте бэкап тома.

Шаблон плейбука для развёртывания (SOP)

  1. Подготовить Docker Host/VM с доступом администратора.
  2. Создать Docker том grafana-data: docker volume create grafana-data.
  3. Подготовить grafana.ini (если нужен кастом).
  4. Собрать custom-образ при необходимости: docker build -t custom-grafana:1.0 .
  5. Запустить контейнер и проверить статус: docker run -d –name grafana -p 9000:3000 -v grafana-data:/var/lib/grafana custom-grafana:1.0
  6. Пройти по чеклисту: доступ к UI, подключение источников, проверка дашбордов.
  7. Настроить мониторинг контейнера и бэкапы тома.

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

  • Проблема: контейнер стартует, но страница 404 или 502 через прокси. Решение: проверьте проброс портов и конфигурацию обратного прокси; убедитесь, что прокси направляет на правильный порт контейнера.

  • Проблема: плагины не установились. Решение: проверьте логи контейнера на ошибки установки; возможно, нужен интернет или правильный URL плагина.

  • Проблема: значение переменной не применяется. Решение: убедитесь в корректном нейминге GF<РАЗДЕЛ><ПАРАМЕТР> и в применении DEFAULT для верхнего уровня.

Заключение

Docker делает развёртывание Grafana быстрым и предсказуемым. Для тестов хватит одного docker run, в продакшене важно смонтировать том для данных, зафиксировать версии образов, защитить секреты и планировать обновления. При необходимости используйте собственный образ, автоматизируйте сборку в CI и храните конфигурацию и дашборды в системе контроля версий.

Краткий план действий для перехода в продакшен:

  1. Закрепить теги образов.
  2. Перенести критические данные в внешний том или БД.
  3. Настроить TLS и прокси.
  4. Обеспечить резервные копии и процесс отката.

Ссылки и дополнительные ресурсы

  • Официальный Docker-репозиторий Grafana — ознакомьтесь с документацией образа для последующих опций.
  • Документация Grafana — конфигурация, плагины, API и RBAC.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Как настроить Back Tap на iPhone
iOS

Как настроить Back Tap на iPhone

Отключить подсказки и рекомендации в Windows 11
Windows

Отключить подсказки и рекомендации в Windows 11

Анимированная маска текста в Canva: пошагово
Дизайн

Анимированная маска текста в Canva: пошагово

Ethernet не работает в Windows — пошаговая помощь
Сеть

Ethernet не работает в Windows — пошаговая помощь

Условное форматирование по датам в Excel
Microsoft Excel

Условное форматирование по датам в Excel

Как транскодировать и стримить видео на iOS и Android с Plex
Медиа

Как транскодировать и стримить видео на iOS и Android с Plex