Caution
Начиная с релиза Grafana
12.4.0, репозиторийgrafana/grafana-ossв Docker Hub больше не будет обновляться. Вместо него мы рекомендуем использовать репозиторийgrafana/grafanaв Docker Hub. Эти два репозитория содержат одинаковые Docker-образы Grafana OSS.
Настройка Docker-образа Grafana
В этом разделе объясняется, как запускать Grafana в Docker в сложных средах, где требуется:
- Использовать разные образы
- Менять уровни логирования
- Определять секреты в облаке
- Настраивать плагины
Примечание: В примерах этого раздела используется Docker-образ Grafana Enterprise. Вы можете использовать редакцию Grafana с открытым исходным кодом, изменив Docker-образ на
grafana/grafana.
Поддерживаемые варианты Docker-образа
Устанавливать и запускать Grafana можно с помощью следующих официальных Docker-образов.
-
Grafana Enterprise:
grafana/grafana-enterprise -
Grafana Open Source:
grafana/grafana
Каждая редакция доступна в двух вариантах: Alpine и Ubuntu.
Образ Alpine (рекомендуется)
Alpine Linux — это дистрибутив Linux, не аффилированный с какой-либо коммерческой организацией. Это универсальная операционная система, ориентированная на пользователей, которые ценят безопасность, эффективность и удобство. Alpine Linux значительно меньше других базовых образов дистрибутивов, что позволяет создавать более компактные и более защищённые образы.
По умолчанию образы собираются на основе широко используемого базового образа проекта Alpine Linux, который можно найти в Docker-репозитории Alpine. Если для вас важна безопасность и вы хотите минимизировать размер образа, рекомендуется использовать вариант Alpine. Однако важно учитывать, что вариант Alpine использует musl libc вместо glibc и других. В результате некоторые программы могут столкнуться с проблемами в зависимости от их требований к libc. Тем не менее, у большинства программ проблем быть не должно, поэтому вариант Alpine в целом надёжен.
Образ Ubuntu
Образы Grafana Enterprise и OSS на основе Ubuntu собираются на базе образа Ubuntu, который можно найти в Docker-репозитории Ubuntu. Образ на основе Ubuntu может быть хорошим выбором для пользователей, которые предпочитают образ на базе Ubuntu или нуждаются в определённых инструментах, недоступных в Alpine.
-
Grafana Enterprise:
grafana/grafana-enterprise:<version>-ubuntu -
Grafana Open Source:
grafana/grafana:<version>-ubuntu
Запуск конкретной версии Grafana
Вы также можете запустить конкретную версию Grafana или бета-версию на основе ветки main репозитория grafana/grafana на GitHub.
Примечание: Если вы используете операционную систему Linux, например Debian или Ubuntu, и при выполнении команд Docker возникают ошибки прав доступа, возможно, потребуется добавить префикс
sudoк команде или добавить своего пользователя в группуdocker. В официальной документации Docker есть инструкции о том, как запускать Docker от имени пользователя, не являющегося root.
Чтобы запустить конкретную версию Grafana, укажите её в разделе
docker run -d -p 3000:3000 --name grafana grafana/grafana-enterprise:<version number>
Пример:
Следующая команда запускает контейнер Grafana Enterprise и указывает версию 9.4.7. Если вы хотите запустить другую версию, измените раздел с номером версии.
docker run -d -p 3000:3000 --name grafana grafana/grafana-enterprise:9.4.7
Для последних релизов Grafana в Docker-репозиториях grafana/grafana и grafana/grafana-enterprise также есть теги minor-версий. Например, если вы всегда хотите иметь последнюю версию 12.1, можно использовать grafana/grafana-enterprise:12.1 или grafana/grafana-enterprise:12.1-ubuntu.
Запуск ветки main Grafana
После каждой успешной сборки ветки main обновляются два тега: grafana/grafana:main и grafana/grafana:main-ubuntu. Кроме того, создаются два новых тега: grafana/grafana-dev:<version> и grafana/grafana-dev:<version>-ubuntu, где version — пре-релизная версия Grafana. Например, если 1234 — это Run ID сборки в GitHub, то 12.2.0-1234. Эти теги обеспечивают доступ к самым последним сборкам ветки main Grafana. Дополнительную информацию см. в разделе grafana/grafana-dev.
Чтобы обеспечить стабильность и согласованность, мы настоятельно рекомендуем использовать тег grafana/grafana-dev:<version> при запуске ветки main Grafana в производственной среде. Этот тег гарантирует, что вы используете конкретную версию Grafana, а не самый последний коммит, который потенциально может привнести ошибки или проблемы. Он также позволяет не засорять пространство имён тегов для основных образов Grafana тысячами пре-релизных тегов.
Список доступных тегов см. в разделах grafana/grafana и grafana/grafana-dev.
Пути по умолчанию
Grafana поставляется с параметрами конфигурации по умолчанию, которые остаются неизменными между версиями независимо от операционной системы или среды (например, виртуальная машина, Docker, Kubernetes и т. д.). Все настройки конфигурации по умолчанию можно посмотреть в документации Настройка Grafana.
При запуске Docker-контейнера Grafana по умолчанию задаются следующие конфигурации. При работе в Docker вы не можете изменить конфигурации, отредактировав файл conf/grafana.ini. Вместо этого конфигурацию можно изменить с помощью переменных среды.
Установка плагинов в Docker-контейнере
Вы можете устанавливать общедоступные плагины, а также плагины, которые являются приватными или используются внутри организации. Инструкции по установке плагинов см. в разделе Установка плагинов в Docker-контейнере.
Установка плагинов из других источников
Чтобы установить плагины из других источников, необходимо определить пользовательский URL и указать его непосредственно перед именем плагина в переменной среды GF_PLUGINS_PREINSTALL: GF_PLUGINS_PREINSTALL=<plugin ID>@[<plugin version>]@<url to plugin zip>.
Пример:
Следующая команда запускает Grafana Enterprise на порту 3000 в отсоединённом режиме и устанавливает пользовательский плагин, заданный как параметр URL в переменной среды GF_PLUGINS_PREINSTALL.
docker run -d -p 3000:3000 --name=grafana \
-e "GF_PLUGINS_PREINSTALL=custom-plugin@@http://plugin-domain.com/my-custom-plugin.zip,grafana-clock-panel" \
grafana/grafana-enterprise
Сборка пользовательского Docker-образа Grafana
В репозитории Grafana на GitHub папка packaging/docker/custom/ содержит Dockerfile, который можно использовать для сборки пользовательского образа Grafana. Dockerfile принимает GRAFANA_VERSION и GF_INSTALL_PLUGINS в качестве аргументов сборки.
Аргумент сборки GRAFANA_VERSION должен быть допустимым тегом Docker-образа grafana/grafana. По умолчанию Grafana собирает образ на основе Alpine. Чтобы собрать образ на основе Ubuntu, добавьте -ubuntu к аргументу сборки GRAFANA_VERSION.
Пример:
В следующем примере показано, как собрать и запустить пользовательский Docker-образ Grafana на основе последнего официального Docker-образа Grafana на базе Ubuntu:
# go to the custom directory
cd packaging/docker/custom
# run the docker build command to build the image
docker build \
--build-arg "GRAFANA_VERSION=latest-ubuntu" \
-t grafana-custom .
# run the custom grafana container using docker run command
docker run -d -p 3000:3000 --name=grafana grafana-custom
Сборка Docker-образа Grafana с предустановленными плагинами
Если вы запускаете несколько установок Grafana с одними и теми же плагинами, можно сэкономить время, собрав настроенный образ, включающий плагины, доступные на странице загрузки плагинов Grafana. При сборке настроенного образа Grafana не приходится устанавливать плагины при каждом запуске, что делает процесс запуска более эффективным.
Примечание: Чтобы указать версию плагина, можно использовать аргумент сборки
GF_INSTALL_PLUGINSи добавить номер версии. Если номер версии не указан, используется последняя версия. Например, можно использовать--build-arg "GF_INSTALL_PLUGINS=grafana-clock-panel 1.0.1,yesoreyeram-infinity-datasource 3.8.0", чтобы указать версии двух плагинов.
Пример:
В следующем примере показано, как собрать и запустить пользовательский Docker-образ Grafana с предустановленными плагинами.
# go to the custom directory
cd packaging/docker/custom
# running the build command
# include the plugins you want e.g. clock planel etc
docker build \
--build-arg "GRAFANA_VERSION=latest" \
--build-arg "GF_INSTALL_PLUGINS=grafana-clock-panel,yesoreyeram-infinity-datasource" \
-t grafana-custom .
# running the custom Grafana container using the docker run command
docker run -d -p 3000:3000 --name=grafana grafana-custom
Сборка Docker-образа Grafana с предустановленными плагинами из других источников
Вы можете создать Docker-образ, содержащий плагин, который предназначен исключительно для вашей организации, даже если он недоступен публично. Просто используйте аргумент сборки GF_INSTALL_PLUGINS, чтобы указать URL плагина и имя папки установки, например GF_INSTALL_PLUGINS=<url to plugin zip>;<plugin install folder name>.
В следующем примере показано создание настроенного Docker-образа Grafana, который включает пользовательский плагин по ссылке URL, плагин clock panel и плагин simple-json-datasource. Эти плагины можно задать в аргументе сборки с помощью переменной среды Grafana Plugin.
# go to the folder
cd packaging/docker/custom
# running the build command
docker build \
--build-arg "GRAFANA_VERSION=latest" \
--build-arg "GF_INSTALL_PLUGINS=http://plugin-domain.com/my-custom-plugin.zip;my-custom-plugin,grafana-clock-panel,yesoreyeram-infinity-datasource" \
-t grafana-custom .
# running the docker run command
docker run -d -p 3000:3000 --name=grafana grafana-custom
Логирование
По умолчанию логи Docker-контейнера направляются в STDOUT, что является обычной практикой в сообществе Docker. Это можно изменить, задав другой режим логирования, например console, file или syslog. Можно использовать один или несколько режимов, разделяя их пробелами, например console file. По умолчанию включены оба режима: console и file.
Пример:
В следующем примере Grafana запускается с режимом логирования console file, заданным в переменной среды GF_LOG_MODE.
# Run Grafana while logging to both standard out
# and /var/log/grafana/grafana.log
docker run -p 3000:3000 -e "GF_LOG_MODE=console file" grafana/grafana-enterprise
Настройка Grafana с помощью Docker Secrets
Вы можете передавать в Grafana конфиденциальные данные, такие как учётные данные для входа и секреты, с помощью файлов конфигурации. Этот метод хорошо работает с Docker Secrets, поскольку секреты автоматически монтируются в расположение /run/secrets/ внутри контейнера.
Этот приём можно применить к любым параметрам конфигурации в conf/grafana.ini, задав GF_<SectionName>_<KeyName>__FILE равным пути к файлу, содержащему секретную информацию. Дополнительные сведения об использовании команд Docker secret см. в разделе docker secret.
В следующем примере показано, как задать пароль администратора:
- Секрет пароля администратора:
/run/secrets/admin_password - Переменная среды:
GF_SECURITY_ADMIN_PASSWORD__FILE=/run/secrets/admin_password
Настройка учётных данных Docker secrets для AWS CloudWatch
Grafana поставляется со встроенной поддержкой источника данных Amazon CloudWatch. Чтобы настроить источник данных, необходимо предоставить такую информацию, как AWS ID-Key, секретный ключ доступа, регион и т. д. В качестве способа предоставления этой информации можно использовать Docker secrets.
Пример:
В примере ниже показано, как использовать переменные среды Grafana через Docker Secrets для AWS ID-Key, секретного ключа доступа, региона и профиля.
В примере используются следующие значения для источника данных AWS Cloudwatch:
AWS_default_ACCESS_KEY_ID=aws01us02
AWS_default_SECRET_ACCESS_KEY=topsecret9b78c6
AWS_default_REGION=us-east-1
-
Создайте Docker secret для каждого из указанных выше значений.
echo "aws01us02" | docker secret create aws_access_key_id -echo "topsecret9b78c6" | docker secret create aws_secret_access_key -echo "us-east-1" | docker secret create aws_region - -
Выполните следующую команду, чтобы убедиться, что секреты созданы.
$ docker secret lsВывод команды должен выглядеть примерно так:
ID NAME DRIVER CREATED UPDATED i4g62kyuy80lnti5d05oqzgwh aws_access_key_id 5 minutes ago 5 minutes ago uegit5plcwodp57fxbqbnke7h aws_secret_access_key 3 minutes ago 3 minutes ago fxbqbnke7hplcwodp57fuegit aws_region About a minute ago About a minute agoГде:
ID = уникальный ID секрета, который будет использоваться в команде docker run
NAME = логическое имя, определённое для каждого секрета
-
Добавьте секреты в командную строку при запуске Docker.
docker run -d -p 3000:3000 --name grafana \ -e "GF_DEFAULT_INSTANCE_NAME=my-grafana" \ -e "GF_AWS_PROFILES=default" \ -e "GF_AWS_default_ACCESS_KEY_ID__FILE=/run/secrets/aws_access_key_id" \ -e "GF_AWS_default_SECRET_ACCESS_KEY__FILE=/run/secrets/aws_secret_access_key" \ -e "GF_AWS_default_REGION__FILE=/run/secrets/aws_region" \ -v grafana-data:/var/lib/grafana \ grafana/grafana-enterprise
Вы также можете указать несколько профилей в GF_AWS_PROFILES (например, GF_AWS_PROFILES=default another).
Следующий список включает поддерживаемые переменные среды:
GF_AWS_${profile}_ACCESS_KEY_ID: ID ключа доступа AWS (обязательно).GF_AWS_${profile}_SECRET_ACCESS_KEY: секретный ключ доступа AWS (обязательно).GF_AWS_${profile}_REGION: регион AWS (необязательно).
Устранение неполадок развёртывания в Docker
По умолчанию уровень логирования Grafana установлен в INFO, но вы можете повысить уровень логирования до режима DEBUG, когда хотите воспроизвести проблему.
Дополнительные сведения о логировании см. в разделе логи.
Повышение уровня логирования с помощью команды Docker run (CLI)
Чтобы повысить уровень логирования до режима DEBUG, добавьте переменную среды GF_LOG_LEVEL в командную строку.
docker run -d -p 3000:3000 --name=grafana \
-e "GF_LOG_LEVEL=debug" \
grafana/grafana-enterprise
Повышение уровня логирования с помощью Docker Compose
Чтобы повысить уровень логирования до режима DEBUG, добавьте переменную среды GF_LOG_LEVEL в файл docker-compose.yaml.
version: '3.8'
services:
grafana:
image: grafana/grafana-enterprise
container_name: grafana
restart: unless-stopped
environment:
# increases the log level from info to debug
- GF_LOG_LEVEL=debug
ports:
- '3000:3000'
volumes:
- 'grafana_storage:/var/lib/grafana'
volumes:
grafana_storage: {}
Проверка файла Docker Compose YAML
Вероятность появления синтаксических ошибок в YAML-файле возрастает по мере усложнения файла. Для проверки на синтаксические ошибки можно использовать следующую команду.
# go to your docker-compose.yaml directory
cd /path-to/docker-compose/file
# run the validation command
docker compose config
Если в YAML-файле есть ошибки, вывод команды выделит строки, содержащие ошибки. Если ошибок в YAML-файле нет, вывод включает содержимое файла docker-compose.yaml в подробном формате YAML.