Бэкэнд-плагин Grafana, который обрабатывает рендеринг панелей и информационных панелей в PNG с помощью безголового браузера (Chromium).
Этот плагин упакован в один исполняемый файл со средой выполнения Node.js и браузером Chromium. Это означает, что для работы плагина вам не обязательно устанавливать Node.js и Chromium в вашей системе.
Однако браузер Chromium зависит от определенных библиотек. Если в вашей системе установлены не все эти библиотеки, вы можете увидеть некоторые ошибки при попытке визуализировать изображение. Дополнительную информацию, включая помощь по устранению неполадок, можно найти в документации по рендерингу изображений Grafana.
Для рендеринга изображений требуется много памяти, главным образом потому, что Grafana создает экземпляры браузера в фоновом режиме для фактического рендеринга. Мы рекомендуем иметь минимум 16 ГБ свободной памяти для системы рендеринга изображений.
Параллельная обработка нескольких изображений требует еще большего объема памяти. Вы можете использовать службу удаленного рендеринга для рендеринга изображений в удаленной системе, поэтому ресурсы вашей локальной системы не будут затронуты.
Вы можете установить плагин с помощью Grafana CLI (рекомендуемый способ) или с помощью образа Grafana Docker.
grafana-cli plugins install grafana-image-renderer
Этот плагин несовместим с текущим образом Grafana Docker и требует дополнительных зависимостей на уровне системы. Мы рекомендуем настроить другой контейнер Docker для рендеринга и использовать вместо него удаленный рендеринг. Инструкции см. в разделе Запуск в Docker.
Если вы все же хотите установить плагин с образом Grafana Docker, обратитесь к инструкциям по созданию собственного образа Grafana в документации Grafana Docker.
Примечание. Требуется подключение к Интернету.
Вы можете запустить этот плагин как удаленную службу HTTP-рендеринга. В этой настройке Grafana визуализирует изображение, отправляя HTTP-запрос к удаленной службе рендеринга, которая, в свою очередь, визуализирует изображение и возвращает его обратно в HTTP-ответе в Grafana.
Вы можете запустить службу удаленного рендеринга HTTP с помощью Docker или как отдельное приложение Node.js.
Изображения Grafana Docker публикуются на Docker Hub.
В следующем примере показано, как можно запустить Grafana и службу удаленного рендеринга HTTP в двух отдельных контейнерах Docker с помощью Docker Compose.
Создайте docker-compose.yml
со следующим содержимым:
version : ' 2 '
services :
grafana :
image : grafana/grafana:latest
ports :
- ' 3000:3000 '
environment :
GF_RENDERING_SERVER_URL : http://renderer:8081/render
GF_RENDERING_CALLBACK_URL : http://grafana:3000/
GF_LOG_FILTERS : rendering:debug
renderer :
image : grafana/grafana-image-renderer:latest
ports :
- 8081
Затем запустите docker Compose.
docker-compose up
В следующем примере показано, как создать и запустить службу удаленного рендеринга HTTP как автономное приложение Node.js и соответствующим образом настроить Grafana.
Клонируйте Git-репозиторий плагина рендеринга изображений Grafana.
Установите зависимости и выполните сборку:
yarn install --pure-lockfile
yarn run build
Запустите сервер:
node build/app.js server --port=8081
Обновите конфигурацию Grafana:
[rendering]
server_url = http://localhost:8081/render
callback_url = http://localhost:3000/
Перезапустите Графану.
Доступ к конечным точкам рендеринга ограничен запросами, предоставляющими токен аутентификации. Этот токен должен быть настроен в файле конфигурации Grafana и файле конфигурации средства визуализации. Этот токен важен при запуске плагина в режиме удаленного рендеринга, чтобы избежать несанкционированного раскрытия файлов (см. CVE-2022-31176).
См. документацию по рендерингу изображений Grafana, чтобы настроить этот секретный токен. Значение по умолчанию -
настроено как в Grafana, так и в средстве рендеринга изображений, когда вы начинаете, но мы настоятельно рекомендуем вам обновить его до более безопасного значения.
Доступные параметры конфигурации см. в документации по рендерингу изображений Grafana.
Для получения помощи по устранению неполадок обратитесь к документации по устранению неполадок Grafana Image Rendering.
Чтобы запустить наборы автоматических тестов рендеринга изображений, вам необходимо запустить следующую команду из корневой папки:
yarn test
Это запустит экземпляр Grafana в Docker, а затем запустит наборы тестов.
Примечания:
Если в файлах эталонных изображений (расположенных в /tests/testdata
) есть какие-то ожидаемые изменения, запустите yarn test-update
и отправьте обновленные ссылки.
Если тесты не пройдены и вы хотите увидеть разницу между полученным изображением и эталонным изображением, запустите yarn test-diff
. Это создаст изображения (называемые diff_
), содержащие различия в папке /tests/testdata
.
Если тесты прошли успешно в вашей локальной среде, но не прошли в Drone. Вы можете выполнить следующие действия, чтобы запустить тесты в среде, аналогичной конвейеру Drone. Это смонтирует ваши локальные файлы репозитория grafana-image-renderer
в образе Docker, поэтому любые изменения, происходящие в образе Docker, будут доступны в вашей локальной среде. Это позволяет вам запускать yarn test-diff
и yarn test-update
в Docker и видеть результаты локально.
cd ./devenv/docker/drone
docker-compose up
drone-docker-puppeteer
и выполните следующие команды: cd /drone/src
PUPPETEER_CACHE_DIR=/drone/src/cache yarn install --frozen-lockfile --no-progress
PUPPETEER_CACHE_DIR=/drone/src/cache CI=true yarn test-ci
Примечания. В контейнере Docker тесты могут занять больше времени. Если у вас возникли проблемы с таймаутом, вы можете запустить тестовую команду с --testTimeout option
:
PUPPETEER_CACHE_DIR=/drone/src/cache CI=true yarn test-ci --testTimeout=10000