🐳 Как запустить Grafana в контейнере Docker

Мануал

Grafana – это ведущая платформа наблюдаемости для визуализации показателей.

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

Grafana – это облачное нативное приложение, которое можно запустить у популярных поставщиков инфраструктуры, установить на собственном оборудовании или развернуть как отдельный контейнер.

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

Начало работы

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

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

Вы получите свежий сервер Grafana, доступный на порту 3000.

Зайдите на сайт http://localhost:3000 и войдите под именем admin/admin.

Теперь вы можете начать добавлять источники данных и дашборды и для создания визуализаций.

Нажмите кнопку “Add your first data source” на главной странице, чтобы подключить новый источник; выберите тип поставщика на следующем экране, затем заполните детали, чтобы Grafana могла получить доступ к вашим данным.

Затем вернитесь на главную страницу и нажмите “Create your first dashboard”.

Выберите предпочтительный тип визуализации, а затем используйте панель запросов для выбора соответствующих показателей из ваших данных.

Как только вы закончите, ваша новая визуализация появится на дашборде.

Эта процедура демонстрирует, как легко можно запустить одноразовый тестовый экземпляр Grafana.

Запуск контейнера, готового к проду, требует немного больше размышлений.

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

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

Grafana использует бизнес-модель с двумя лицензиями.

Версия с открытым исходным кодом публикуется как grafana/grafana на Docker Hub, а версия Enterprise – grafana/grafana-enterprise.

Следующие инструкции будут работать с обоими вариантами верхнего уровня.

Доступно несколько версий Grafana, каждая из которых представлена в версиях Alpine или Ubuntu.

В большинстве ситуаций развертывания следует предпочесть Alpine: она более компактна и ориентирована на создание совместимой с Grafana среды без лишних дополнений.

Выбор ОС осуществляется путем добавления ее названия после версии Grafana в теге:

grafana/grafana:8.3.0-ubuntu

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

Если опустить имя ОС (grafana/grafana:8.3.0), вы получите вариант c alpine выбранной версии.

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

Требования к развертыванию Grafana относительно просты.

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

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

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

Этот пример запускает новый контейнер Grafana под названием grafana, который прослушивает порт 9000 на вашем хосте Docker.

Порт привязан к 3000 в контейнере, так как это адрес прослушивания Grafana по умолчанию.

На том Docker под названием grafana-data ссылается флаг -v.

Он монтируется в каталог /var/lib/grafana внутри контейнера, где Grafana хранит все свои сгенерированные данные.

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

Внедрение конфигурации

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

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

# INI file
instance_name = my-grafana

[security]
admin_user = demo
admin_password = grafana

---

# Corresponding environment variables
GF_DEFAULT_INSTANCE_NAME=my-grafana
GF_SECURITY_ADMIN_USER=demo
GF_SECURITY_ADMIN_PASSWORD=grafana

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

После того как вы выяснили, какие значения вы хотите изменить, при запуске контейнера задайте нужные переменные окружения с помощью флага -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

Grafana также поддерживает конфигурацию на основе файлов.

С помощью этого механизма значение целевой переменной окружения становится путем к файлу, доступному внутри контейнера.

Grafana получит реальное значение параметра, прочитав файл.

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

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 (-v ./password.txt:/run/secrets/password) или специальной системы управления секретами, такой как Docker Secrets.

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

Переопределение конфигурационного файла

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

В образе Docker этот файл находится по адресу /etc/grafana/grafana.ini.

Вы можете смонтировать замену на ожидаемый путь с помощью Docker 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 требуются плагины, которые добавляют дополнительные источники данных или предоставляют готовые панели приборной панели.

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

Вот как добавить официальный плагин, включенный в каталог Grafana:

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

Переменная GF_INSTALL_PLUGINS ожидает список имен плагинов, разделенных запятыми, для установки при первом запуске контейнера.

Эти имена будут переданы команде grafana-cli plugins install.

Это означает, что вы можете включать выражения версии, такие как grafana-simple-json-datasource 1.1.0, и ссылаться на плагины сообщества по их URL:

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

Создание пользовательского образа

Ручное создание контейнеров Grafana с конфигурацией, заданной с помощью флагов запуска docker, является повторяющимся и чреватым ошибками процессом.

Создание собственного образа Docker с внесенными изменениями позволяет сэкономить время и централизовать настройки, когда несколько членов команды должны иметь возможность запустить новый экземпляр.

Этого можно добиться, написав Dockerfile, расширяющий официальный образ grafana/grafana.

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

FROM grafana/grafana:8.3.0

# Add plugins
ENV GF_INSTALL_PLUGINS=grafana-simple-json-datasource

# Copy a config file from your working directory
COPY grafana.ini /etc/grafana/grafana.ini

Используйте свой Dockerfile для создания нового образа Grafana:

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 упрощает установку и настройку Grafana, предоставляя изолированную среду, в которой вы можете разместить свою платформу наблюдаемости.

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

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

см. также:

Добавить комментарий