Comment exécuter Grafana dans un conteneur Docker

0
152

Grafana est une plate-forme d'observabilité leader 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 les plateformes populaires. fournisseurs d'infrastructure, installés sur votre propre matériel ou déployés 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.

Démarrer

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 qu'administrateur/administrateur.

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” bouton 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.

Publicité

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 et mieux équipée pour une utilisation à long terme.

Sélectionner une variante d'image

Grafana utilise un modèle commercial à double licence. L'édition open source est publiée sous le nom de grafana/grafana sur Docker Hub alors que Enterprise est grafana/grafana-enterprise. Les instructions suivantes fonctionneront avec ces deux variantes de haut niveau.

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 aucun extra superflu.

Le système d'exploitation est sélectionné en ajoutant son nom après la version de Grafana dans un 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 importantes lorsque 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 Publicité

Cet exemple démarre un nouveau conteneur Grafana appelé grafana qui écoute sur le port 9000 sur 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 l'indicateur -v. Il 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.

Injecting Configuration

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 n'importe quelle clé 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 — # Variables d'environnement correspondantes GF_DEFAULT_INSTANCE_NAME=my-grafana GF_SECURITY_ADMIN_USER=demo GF_SECURITY_ADMIN_PASSWORD=grafana

Assurez-vous d'inclure le nom implicite de la section DEFAULT lorsque vous 8217;re modification de 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 les indicateurs -e 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.

Publicité

Pour utiliser cette approche, modifiez n'importe quelle variable d'environnement en ajoutant __FILE à son nom normal :

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 d'un système de gestion des 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 les variables d'environnement pour être pratique.

L'image Docker localise ce fichier dans /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 d'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.

Publicité

Voici comment ajouter un plugin officiel qui est 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

La variable GF_INSTALL_PLUGINS attend une liste de noms de plugins séparés par des virgules à installer lors du premier démarrage du conteneur. Les noms seront transmis à la commande d'installation des plugins grafana-cli. Cela signifie que vous pouvez inclure des expressions de version, telles que grafana-simple-json-datasource 1.1.0, et référencer 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

L'affichage manuel des conteneurs Grafana avec la configuration fournie via les drapeaux d'exécution du menu fixe 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 l'image officielle grafana/grafana. 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 # Ajouter des plugins ENV GF_INSTALL_PLUGINS=grafana-simple-json-datasource # Copier une configuration de votre répertoire de travail 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 désormais 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.

Publicité

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 extraire grafana/grafana, docker construire votre image, la pousser vers un registre, puis extraire 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.

Résumé

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.