Un plugin backend Grafana qui gère le rendu des panneaux et des tableaux de bord au format PNG à l'aide d'un navigateur sans tête (Chromium).
Ce plugin est regroupé dans un seul exécutable avec le runtime Node.js et le navigateur Chromium. Cela signifie que vous n'avez pas besoin d'installer Node.js et Chromium sur votre système pour que le plugin fonctionne.
Cependant, le navigateur Chromium dépend de certaines bibliothèques. Si toutes ces bibliothèques ne sont pas installées sur votre système, vous pouvez voir des erreurs lorsque vous essayez de restituer une image. Pour plus d'informations, y compris une aide au dépannage, reportez-vous à la documentation Grafana Image Rendering.
Le rendu des images nécessite beaucoup de mémoire, principalement parce que Grafana crée des instances de navigateur en arrière-plan pour le rendu proprement dit. Nous recommandons un minimum de 16 Go de mémoire libre sur le système de rendu des images.
Le rendu de plusieurs images en parallèle nécessite une empreinte mémoire encore plus importante. Vous pouvez utiliser le service de rendu à distance pour restituer des images sur un système distant, afin que les ressources de votre système local ne soient pas affectées.
Vous pouvez installer le plugin à l'aide de Grafana CLI (méthode recommandée) ou avec l'image Grafana Docker.
grafana-cli plugins install grafana-image-renderer
Ce plugin n'est pas compatible avec l'image Grafana Docker actuelle et nécessite des dépendances supplémentaires au niveau du système. Nous vous recommandons de configurer un autre conteneur Docker pour le rendu et d'utiliser plutôt le rendu à distance. Pour obtenir des instructions, reportez-vous à Exécuter dans Docker.
Si vous souhaitez toujours installer le plugin avec l'image Grafana Docker, reportez-vous aux instructions de création d'une image Grafana personnalisée dans la documentation Grafana Docker.
Remarque : Nécessite une connexion Internet.
Vous pouvez exécuter ce plugin en tant que service de rendu HTTP à distance. Dans cette configuration, Grafana restitue une image en effectuant une requête HTTP au service de rendu distant, qui à son tour restitue l'image et la renvoie dans la réponse HTTP à Grafana.
Vous pouvez exécuter le service de rendu HTTP à distance à l'aide de Docker ou en tant qu'application Node.js autonome.
Les images Grafana Docker sont publiées sur Docker Hub.
L'exemple suivant montre comment exécuter Grafana et le service de rendu HTTP distant dans deux conteneurs Docker distincts à l'aide de Docker Compose.
Créez un docker-compose.yml
avec le contenu suivant :
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
Ensuite, exécutez Docker Compose.
docker-compose up
L'exemple suivant décrit comment créer et exécuter le service de rendu HTTP distant en tant qu'application Node.js autonome et configurer Grafana de manière appropriée.
Clonez le référentiel Git du plug-in de rendu d'images Grafana.
Installez les dépendances et construisez :
yarn install --pure-lockfile
yarn run build
Exécutez le serveur :
node build/app.js server --port=8081
Mettre à jour la configuration de Grafana :
[rendering]
server_url = http://localhost:8081/render
callback_url = http://localhost:3000/
Redémarrez Grafana.
L'accès aux points de terminaison de rendu est limité aux requêtes fournissant un jeton d'authentification. Ce jeton doit être configuré dans le fichier de configuration Grafana et le fichier de configuration du moteur de rendu. Ce jeton est important lorsque vous exécutez le plugin en mode de rendu à distance pour éviter la divulgation non autorisée de fichiers (voir CVE-2022-31176).
Consultez la documentation Grafana Image Rendering pour configurer ce jeton secret. La valeur par -
est configurée à la fois sur Grafana et sur le moteur de rendu d'image lorsque vous démarrez, mais nous vous recommandons fortement de la mettre à jour vers une valeur plus sécurisée.
Pour connaître les paramètres de configuration disponibles, veuillez vous référer à la documentation Grafana Image Rendering.
Pour obtenir de l'aide sur le dépannage, reportez-vous à la documentation de dépannage de Grafana Image Rendering.
Afin d'exécuter les suites de tests automatisés du moteur de rendu d'images, vous devez exécuter la commande suivante à partir du dossier racine :
yarn test
Cela lancera une instance Grafana dans Docker, puis exécutera les suites de tests.
Remarques :
S'il y a des changements attendus dans les fichiers image de référence (situés dans /tests/testdata
), exécutez yarn test-update
et transférez les références mises à jour.
Si les tests échouent et que vous souhaitez voir la différence entre l'image que vous obtenez et l'image de référence, exécutez yarn test-diff
. Cela générera des images (appelées diff_
) contenant les différences dans le dossier /tests/testdata
.
Si les tests réussissent dans votre environnement local mais échouent dans Drone. Vous pouvez suivre ces étapes pour exécuter les tests dans un environnement similaire au pipeline Drone. Cela montera vos fichiers locaux du dépôt grafana-image-renderer
dans l'image Docker afin que toute modification apportée à l'image Docker soit disponible dans votre environnement local. Cela vous permet d'exécuter yarn test-diff
et yarn test-update
dans Docker et de voir les résultats localement.
cd ./devenv/docker/drone
docker-compose up
drone-docker-puppeteer
et exécutez les commandes suivantes : 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
Remarques : Les tests peuvent prendre plus de temps dans le conteneur Docker. Si vous rencontrez des problèmes de délai d'attente, vous pouvez exécuter la commande test avec l' --testTimeout option
:
PUPPETEER_CACHE_DIR=/drone/src/cache CI=true yarn test-ci --testTimeout=10000