Поиск по сайту:

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


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

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

Начиная

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

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

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

Теперь вы можете начать добавлять источники данных и информационные панели для создания визуализаций. Нажмите кнопку «Добавить первый источник данных» на главной странице, чтобы подключить новый источник; выберите тип поставщика на следующем экране, затем заполните данные, чтобы Grafana могла получить доступ к вашим данным.

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

Эта процедура демонстрирует, как легко вы можете запустить одноразовый тестовый экземпляр 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), вы получите вариант 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

Вы можете добавить файл в контейнер с помощью монтирования привязки (-v ./password.txt:/run/secrets/password) или специальной системы управления секретами, такой как Docker Secrets. Конфигурация на основе файлов обеспечивает более безопасный способ ввода конфиденциальных значений, которые вы не хотели бы отображать в виде обычного текста в журналах заданий CI и истории вашей оболочки.

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

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

Образ Docker находит этот файл в /etc/grafana/grafana.ini. Вы можете подключить замену к ожидаемому пути, используя монтирование привязки Docker:

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 run, повторяется и подвержен ошибкам. Создание собственного образа 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. Теперь вы можете надежно воспроизводить свою конфигурацию при каждом запуске контейнера. Это также помогает изменять версию вашей установки с течением времени.

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

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

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

После запуска и запуска установка Dockerized Grafana работает так же, как и обычная. Вы можете подключать источники данных, взаимодействовать с HTTP API и настраивать оповещения, указывая на порт хоста, который вы привязали к своему контейнеру. Вы также можете назначить своему экземпляру доменное имя и настроить HTTPS, обслуживая его за обратным прокси-сервером, таким как Apache или Traefik.