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

- Быстрый запуск: 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. Сразу после первого входа система предложит сменить пароль.

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

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

Эти действия демонстрируют, как легко поднять тестовый экземпляр. Для продуктивного использования потребуется дополнительная конфигурация безопасности, резервного копирования данных и опции обновлений.
Выбор варианта образа
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-пути:
- Указание версии: grafana-simple-json-datasource 1.1.0
- Указание ZIP по URL: https://example.com/grafana-plugin.zip
Важно: установка происходит при первом старте контейнера. Для добавления плагина в уже работающий контейнер может потребоваться перезапуск.
Создание собственного образа
Если каждый раз запускать 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 нужно пересобирать образ, тестировать и выпускать новую версию — это требует процесса обновления.

Рекомендации по безопасности и эксплуатации
- Меняйте пароль admin сразу после первого запуска.
- Используйте внешнюю базу данных (если требуется масштабирование) вместо встроенной sqlite.
- Запускайте Grafana за обратным прокси (nginx, Traefik) для TLS и аутентификации с помощью внешних провайдеров (OAuth, LDAP).
- Ограничьте доступ по сети (firewall, security groups) — открывайте порт только для доверенных источников или через VPN.
- Делайте регулярные бэкапы тома grafana-data и экспортируйте дашборды в репозиторий.
Тестирование и критерии приёмки
Критерии приёмки перед переводом в продакшн:
- Контейнер успешно стартует и отвечает на / (порт проброшен).
- Источники данных добавляются и проходят тест соединения.
- Дашборды загружаются и отображают метрики.
- Плагины установлены при старте (если нужно).
- Секреты не присутствуют в логах или истории CI.
Тест-кейсы:
- Запуск контейнера с монтированием тома: данные сохраняются после удаления контейнера.
- Замена grafana.ini через bind mount: конфигурация применяется после перезапуска.
- Передача пароля через __FILE: пароль не виден в docker inspect без доступа к файлу.
- Установка плагина через GF_INSTALL_PLUGINS: плагин появился в интерфейсе.
Резервные стратегии и откат
Сценарий отката при неудачного обновления образа:
- Остановить новый контейнер.
- Запустить старую версию образа с тем же томом: docker run -d –name grafana-old -p 9000:3000 -v grafana-data:/var/lib/grafana grafana/grafana:<предыдущий-тег>
- Проверить целостность данных и функциональность.
- Если необходимо — восстановить бэкап тома до состояния перед обновлением.
Важно иметь план бэкапов и регламент обновлений.
Чеклисты по ролям
Сетевой инженер / 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)
- Подготовить Docker Host/VM с доступом администратора.
- Создать Docker том grafana-data: docker volume create grafana-data.
- Подготовить grafana.ini (если нужен кастом).
- Собрать custom-образ при необходимости: docker build -t custom-grafana:1.0 .
- Запустить контейнер и проверить статус: docker run -d –name grafana -p 9000:3000 -v grafana-data:/var/lib/grafana custom-grafana:1.0
- Пройти по чеклисту: доступ к UI, подключение источников, проверка дашбордов.
- Настроить мониторинг контейнера и бэкапы тома.
Частые ошибки и способы их устранения
Проблема: контейнер стартует, но страница 404 или 502 через прокси. Решение: проверьте проброс портов и конфигурацию обратного прокси; убедитесь, что прокси направляет на правильный порт контейнера.
Проблема: плагины не установились. Решение: проверьте логи контейнера на ошибки установки; возможно, нужен интернет или правильный URL плагина.
Проблема: значение переменной не применяется. Решение: убедитесь в корректном нейминге GF<РАЗДЕЛ><ПАРАМЕТР> и в применении DEFAULT для верхнего уровня.
Заключение
Docker делает развёртывание Grafana быстрым и предсказуемым. Для тестов хватит одного docker run, в продакшене важно смонтировать том для данных, зафиксировать версии образов, защитить секреты и планировать обновления. При необходимости используйте собственный образ, автоматизируйте сборку в CI и храните конфигурацию и дашборды в системе контроля версий.
Краткий план действий для перехода в продакшен:
- Закрепить теги образов.
- Перенести критические данные в внешний том или БД.
- Настроить TLS и прокси.
- Обеспечить резервные копии и процесс отката.
Ссылки и дополнительные ресурсы
- Официальный Docker-репозиторий Grafana — ознакомьтесь с документацией образа для последующих опций.
- Документация Grafana — конфигурация, плагины, API и RBAC.
Похожие материалы
Как настроить Back Tap на iPhone
Отключить подсказки и рекомендации в Windows 11
Анимированная маска текста в Canva: пошагово
Ethernet не работает в Windows — пошаговая помощь
Условное форматирование по датам в Excel