Comment exécuter Grafana dans un conteneur Docker – CloudSavvy IT
Grafana est une plate-forme d’observabilité de premier plan pour la visualisation de métriques. Il vous permet de créer des tableaux de bord sur mesure pour afficher des informations significatives à partir des flux de données en temps réel de votre application.
Grafana est une application cloud native prête à être lancée sur des fournisseurs d’infrastructure populaires, installée sur votre propre matériel ou déployée en tant que conteneur autonome. Dans ce guide, nous nous concentrerons sur ce dernier choix en utilisant l’image officielle de Grafana pour démarrer une instance qui s’exécute dans Docker.
Sommaire
Commencer
La création de conteneur Grafana la plus simple ressemble à ceci :
docker run -d --name=grafana -p 3000:3000 grafana/grafana
Vous aurez un nouveau serveur Grafana accessible sur le port 3000. Visitez http://localhost:3000
et connectez-vous en tant que admin
/admin
.
Vous pouvez maintenant commencer à ajouter des sources de données et des tableaux de bord pour créer vos visualisations. Appuyez sur le bouton « Ajouter votre première source de données » sur la page d’accueil pour connecter une nouvelle source ; sélectionnez le type de fournisseur sur l’écran suivant, puis remplissez les détails afin que Grafana puisse accéder à vos données.
Revenez ensuite à la page d’accueil et cliquez sur « Créer votre premier tableau de bord ». Choisissez votre type de visualisation préféré, puis utilisez le volet de requête pour sélectionner les métriques appropriées à partir de vos données. Une fois que vous avez terminé, votre nouvelle visualisation s’affichera sur votre tableau de bord.
Cette procédure montre avec quelle facilité vous pouvez démarrer une instance de test Grafana jetable. L’exécution d’un conteneur prêt pour la production nécessite cependant un peu plus de réflexion. Voici une approche plus complète qui est mieux équipée pour une utilisation à long terme.
Sélection d’une variante d’image
Grafana utilise un modèle commercial à double licence. L’édition open-source est publiée en tant que grafana/grafana
sur Docker Hub alors que Enterprise est grafana/grafana-enterprise
. Les instructions suivantes fonctionneront avec ces deux variantes de niveau supérieur.
Plusieurs versions de Grafana sont disponibles, chacune dans les saveurs Alpine ou Ubuntu. Alpine devrait être préféré dans la plupart des situations de déploiement : il est plus mince et vise à fournir un environnement compatible Grafana sans extras superflus.
Le système d’exploitation est sélectionné en ajoutant son nom après la version de Grafana dans une balise d’image :
grafana/grafana:8.3.0-ubuntu
Il est toujours préférable d’épingler une version spécifique afin de ne pas recevoir par inadvertance des modifications avec rupture au fur et à mesure que de nouvelles mises à jour sont publiées. Omettre le nom du système d’exploitation (grafana/grafana:8.3.0
) vous donnera la variante Alpine de votre version sélectionnée.
Création d’un conteneur
Grafana a des exigences de déploiement relativement simples. Vous devez monter un volume Docker pour stocker vos données persistantes et lier un port hôte afin de pouvoir accéder au service. Les paramètres peuvent être fournis en montant un fichier de configuration dans le conteneur ou en injectant des variables d’environnement.
docker run -d --name grafana -p 9000:3000 -v grafana-data:/var/lib/grafana grafana/grafana:8.3.0
Cet exemple démarre un nouveau conteneur Grafana appelé grafana
qui écoute sur le port 9000 de votre hôte Docker. Le port est lié à 3000 dans le conteneur car il s’agit de l’adresse d’écoute par défaut de Grafana.
Un volume Docker appelé grafana-data
est référencé par le -v
drapeau. C’est monté sur /var/lib/grafana
dans le conteneur, où Grafana stocke toutes ses données générées. Le montage de volume signifie que le contenu du répertoire sera stocké en dehors du conteneur, évitant ainsi la perte de données lorsque le conteneur s’arrête ou que votre hôte redémarre.
Configuration d’injection
Vous pouvez remplacer les clés de configuration de Grafana en définissant des variables d’environnement lorsque vous démarrez votre conteneur. Vous pouvez modifier l’une des clés dans les fichiers de configuration au format INI de Grafana en mettant en majuscule le nom de la clé et en ajoutant 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
Assurez-vous d’inclure l’implicite DEFAULT
nom de la section lorsque vous modifiez la valeur d’une variable de niveau supérieur dans le fichier de configuration.
Une fois que vous avez déterminé les valeurs que vous souhaitez modifier, fournissez les variables d’environnement correctes avec -e
drapeaux lorsque vous démarrez votre conteneur :
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 prend également en charge la configuration basée sur les fichiers. Avec ce mécanisme, la valeur de la variable d’environnement cible devient le chemin d’accès à un fichier disponible à l’intérieur du conteneur. Grafana obtiendra la valeur réelle du paramètre en lisant le fichier.
Pour utiliser cette approche, modifiez n’importe quelle variable d’environnement en suffixant __FILE
à son nom habituel :
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
Vous pouvez ajouter le fichier au conteneur à l’aide d’un montage lié (-v ./password.txt:/run/secrets/password
) ou un système de gestion de secrets dédié tel que Docker Secrets. La configuration basée sur les fichiers offre un moyen plus sûr d’injecter des valeurs sensibles que vous préférez ne pas exposer en texte brut dans les journaux des tâches CI et l’historique de votre shell.
Remplacer le fichier de configuration
Vous pouvez toujours remplacer le fichier de configuration sur disque de Grafana si vous modifiez trop de valeurs pour que les variables d’environnement soient pratiques.
L’image Docker localise ce fichier à /etc/grafana/grafana.ini
. Vous pouvez monter un remplacement sur le chemin attendu à l’aide d’un montage de liaison 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
L’utilisation d’un fichier de configuration facilite l’injection de paramètres plus complexes. Vous pouvez interpoler des variables pour créer des valeurs dynamiques. Les fichiers de configuration prennent également en charge les commentaires qui vous permettent de documenter vos intentions pour aider les futurs responsables.
Gestion des plugins
De nombreuses installations de Grafana nécessitent des plug-ins qui ajoutent des sources de données supplémentaires ou fournissent des panneaux de tableau de bord prédéfinis. L’image Docker inclut un utilitaire d’assistance qui vous permet d’ajouter des plugins à un nouveau conteneur en définissant une variable d’environnement spéciale.
Voici comment ajouter un plugin officiel répertorié dans le catalogue 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
le GF_INSTALL_PLUGINS
La variable attend une liste de noms de plug-ins séparés par des virgules à installer lors du premier démarrage du conteneur. Les noms seront transmis au grafana-cli plugins install
commander. Cela signifie que vous pouvez inclure des expressions de version, telles que grafana-simple-json-datasource 1.1.0
et référencez les plugins de la communauté via leur 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
Création d’une image personnalisée
Appeler manuellement les conteneurs Grafana avec la configuration fournie via docker run
flags est répétitif et sujet aux erreurs. Construire votre propre image Docker avec vos modifications incluses permet de gagner du temps et de centraliser les paramètres lorsque plusieurs membres de l’équipe doivent pouvoir lancer une nouvelle instance.
Vous pouvez y parvenir en écrivant un Dockerfile qui étend le fichier officiel grafana/grafana
image. Cela vous donne la possibilité de copier dans un fichier de configuration personnalisé et de définir toutes les variables d’environnement supplémentaires dont vous avez besoin.
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
Utilisez votre Dockerfile pour créer votre nouvelle image Grafana :
docker build -t custom-grafana:latest .
Vous pouvez maintenant démarrer une instance de conteneur préconfigurée à partir de votre image :
docker run -d --name grafana -p 9000:3000 -v grafana-data:/var/lib/grafana custom-grafana:latest
Cette approche est particulièrement utile lorsque vous avez apporté des modifications importantes à votre environnement Grafana. Vous pouvez désormais reproduire de manière fiable votre configuration à chaque fois que vous démarrez un conteneur. Cela facilite également les changements de version de votre installation au fil du temps.
Un inconvénient est la nécessité de reconstruire votre image lorsque les mises à jour en amont de Grafana sont publiées. Vous devrez périodiquement tirer grafana/grafana
, docker build
votre image, poussez-la vers un registre, puis extrayez la nouvelle version sur votre hôte Docker. La dernière étape consiste à recréer vos conteneurs en cours d’exécution afin qu’ils utilisent l’image mise à jour.
Sommaire
Docker simplifie l’installation et la configuration de Grafana en fournissant un environnement isolé dans lequel vous pouvez héberger votre plateforme d’observabilité. Vous pouvez démarrer rapidement de nouvelles instances Grafana en liant un port hôte, en montant un volume de données et en fournissant des valeurs de configuration via des variables d’environnement. Plus tard, vous pouvez encapsuler votre configuration dans votre propre image réutilisable qui s’appuie sur la base officielle.
Une fois qu’elle est opérationnelle, une installation Dockerized Grafana fonctionne comme une installation normale. Vous pouvez connecter des sources de données, interagir avec l’API HTTP et configurer des alertes en pointant vers le port hôte que vous avez lié à votre conteneur. Vous pouvez également attribuer un nom de domaine à votre instance et configurer HTTPS en le servant derrière un proxy inverse tel qu’Apache ou Traefik.