Un complemento de backend de Grafana que maneja la representación de paneles y paneles en PNG mediante un navegador sin cabeza (Chromium).
Este complemento está empaquetado en un único ejecutable con el tiempo de ejecución de Node.js y el navegador Chromium. Esto significa que no necesita tener Node.js y Chromium instalados en su sistema para que el complemento funcione.
Sin embargo, el navegador Chromium depende de determinadas bibliotecas. Si no tiene todas esas bibliotecas instaladas en su sistema, es posible que vea algunos errores al intentar renderizar una imagen. Para obtener más información, incluida ayuda para la resolución de problemas, consulte la documentación de Grafana Image Rendering.
La renderización de imágenes requiere mucha memoria, principalmente porque Grafana crea instancias de navegador en segundo plano para la renderización real. Recomendamos un mínimo de 16 GB de memoria libre en el sistema que procesa imágenes.
Renderizar varias imágenes en paralelo requiere una huella de memoria aún mayor. Puede utilizar el servicio de renderizado remoto para renderizar imágenes en un sistema remoto, de modo que los recursos de su sistema local no se vean afectados.
Puede instalar el complemento usando Grafana CLI (forma recomendada) o con la imagen de Grafana Docker.
grafana-cli plugins install grafana-image-renderer
Este complemento no es compatible con la imagen actual de Grafana Docker y requiere dependencias adicionales a nivel del sistema. Recomendamos configurar otro contenedor Docker para renderizar y utilizar el renderizado remoto en su lugar. Para obtener instrucciones, consulte Ejecutar en Docker.
Si aún desea instalar el complemento con la imagen de Grafana Docker, consulte las instrucciones sobre cómo crear una imagen de Grafana personalizada en la documentación de Grafana Docker.
Nota: Requiere una conexión a Internet.
Puede ejecutar este complemento como un servicio de representación HTTP remoto. En esta configuración, Grafana representa una imagen realizando una solicitud HTTP al servicio de representación remota, que a su vez representa la imagen y la devuelve en la respuesta HTTP a Grafana.
Puede ejecutar el servicio de representación HTTP remoto mediante Docker o como una aplicación Node.js independiente.
Las imágenes de Grafana Docker se publican en Docker Hub.
El siguiente ejemplo muestra cómo puede ejecutar Grafana y el servicio de representación HTTP remoto en dos contenedores Docker separados usando Docker Compose.
Cree un docker-compose.yml
con el siguiente contenido:
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
A continuación, ejecute Docker Compose.
docker-compose up
El siguiente ejemplo describe cómo construir y ejecutar el servicio de representación HTTP remoto como una aplicación Node.js independiente y configurar Grafana adecuadamente.
Clona el repositorio Git del complemento de renderizado de imágenes de Grafana.
Instale dependencias y construya:
yarn install --pure-lockfile
yarn run build
Ejecute el servidor:
node build/app.js server --port=8081
Actualizar la configuración de Grafana:
[rendering]
server_url = http://localhost:8081/render
callback_url = http://localhost:3000/
Reinicie Grafana.
El acceso a los puntos finales de representación está restringido a solicitudes que proporcionen un token de autenticación. Este token debe configurarse en el archivo de configuración de Grafana y en el archivo de configuración del renderizador. Este token es importante cuando ejecuta el complemento en modo de renderizado remoto para evitar la divulgación de archivos no autorizados (consulte CVE-2022-31176).
Consulte la documentación de Grafana Image Rendering para configurar este token secreto. El valor -
está configurado tanto en Grafana como en el procesador de imágenes cuando comienza, pero le recomendamos encarecidamente que lo actualice a un valor más seguro.
Para conocer los ajustes de configuración disponibles, consulte la documentación de Grafana Image Rendering.
Para obtener ayuda para la solución de problemas, consulte la documentación de solución de problemas de Grafana Image Rendering.
Para ejecutar los conjuntos de pruebas automatizadas del procesador de imágenes, debe ejecutar el siguiente comando desde la carpeta raíz:
yarn test
Esto iniciará una instancia de Grafana en Docker y, luego, ejecutará los conjuntos de pruebas.
Notas:
Si se esperan algunos cambios en los archivos de imagen de referencia (ubicados en /tests/testdata
), ejecute yarn test-update
y envíe las referencias actualizadas.
Si las pruebas fallan y desea ver la diferencia entre la imagen obtenida y la imagen de referencia, ejecute yarn test-diff
. Esto generará imágenes (llamadas diff_
) que contienen las diferencias en la carpeta /tests/testdata
.
Si las pruebas tienen éxito en su entorno local pero fallan en Drone. Puede seguir estos pasos para ejecutar las pruebas en un entorno similar al canal Drone. Esto montará sus archivos locales del repositorio grafana-image-renderer
en la imagen de Docker para que cualquier cambio que ocurra en la imagen de Docker esté disponible en su entorno local. Esto le permite ejecutar yarn test-diff
y yarn test-update
en Docker y ver los resultados localmente.
cd ./devenv/docker/drone
docker-compose up
drone-docker-puppeteer
y ejecute los siguientes comandos: 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
Notas: Las pruebas pueden tardar más en el contenedor Docker. Si tiene problemas de tiempo de espera, puede ejecutar el comando de prueba con la --testTimeout option
:
PUPPETEER_CACHE_DIR=/drone/src/cache CI=true yarn test-ci --testTimeout=10000