Introduction
Bienvenue dans ce laboratoire pratique sur la configuration de Loki. Loki est un système d'agrégation de logs horizontalement scalable, hautement disponible et multi-tenant, inspiré par Prometheus. Il est conçu pour être très rentable et facile à opérer.
Dans ce laboratoire, nous nous concentrerons sur le flux de travail de base complet pour la collecte et la visualisation des logs. Nous utiliserons trois composants clés :
- Loki : Le serveur principal responsable du stockage et du traitement des logs.
- Promtail : Un agent qui découvre les fichiers journaux locaux et les envoie à une instance Loki.
- Grafana : Une plateforme de visualisation où nous nous connecterons à Loki pour explorer et interroger nos logs.
Vous téléchargerez et démarrerez vous-même Loki et Grafana, configurerez Promtail, puis examinerez les journaux dans Grafana. Les téléchargements restent visibles dans Terminal et peuvent être relancés.
Promtail est arrivé en fin de vie le 2 mars 2026. Ce laboratoire le conserve pour expliquer les déploiements Promtail existants ; utilisez Grafana Alloy pour les nouveaux collecteurs de journaux en production.
Télécharger les images et démarrer Loki et Grafana
Dans cette étape, vous préparerez les services de journaux avant de configurer le collecteur. Loki stocke les journaux, Grafana les interroge et Promtail envoie les fichiers locaux à Loki. L’initialisation ne télécharge ni ne démarre ces services.
cd /home/labex/project
Chaque étiquette fixe sélectionne la version utilisée dans ce laboratoire. Les téléchargements peuvent prendre plusieurs minutes. Attendez que chaque commande rende l’invite. Si un téléchargement échoue, relancez la même commande : Docker réutilise les couches terminées. Ne continuez pas tant qu’un téléchargement reste incomplet.
docker pull grafana/loki:3.5.0
docker pull grafana/grafana:11.6.0
docker pull grafana/promtail:3.5.0
docker network create crée un réseau où les conteneurs peuvent résoudre leurs noms respectifs. docker run -d démarre un conteneur en arrière-plan ; --name lui donne un nom, --network le rattache au réseau et -p associe un port de l’hôte à un port du conteneur. Utilisez le port hôte 8080 pour Grafana afin d’éviter les services de la plateforme sur le port 3000. Loki utilise la configuration par défaut pour une instance unique fournie dans son image.
docker network create monitoring-net
docker run -d --name loki --network monitoring-net -p 3100:3100 grafana/loki:3.5.0
docker run -d --name grafana --network monitoring-net -p 8080:3000 grafana/grafana:11.6.0
Les options de curl signalent les échecs HTTP et réessaient les erreurs temporaires de démarrage jusqu’à 30 fois, à deux secondes d’intervalle. Un conteneur en cours d’exécution peut encore s’initialiser : attendez donc la réussite du contrôle de santé. Loki peut initialement renvoyer HTTP 503 pendant l’initialisation de son ingester.
curl --fail --silent --show-error --retry 30 --retry-delay 2 --retry-connrefused --retry-all-errors http://localhost:3100/ready
curl --fail --silent --show-error --retry 30 --retry-delay 2 --retry-connrefused --retry-all-errors http://localhost:8080/api/health
Continuez uniquement lorsque Loki renvoie ready et que Grafana indique "database": "ok". Si un service n’est pas prêt, consultez docker ps -a et ses journaux, par exemple avec docker logs grafana, avant de poursuivre.
Créer promtail.yml pour Récupérer les Logs Système
Dans cette étape, vous allez créer un fichier de configuration pour Promtail. Ce fichier YAML indique à Promtail où se situe le serveur Loki et quels fichiers journaux il doit surveiller. Tout votre travail doit être effectué dans le répertoire ~/project.
Tout d'abord, créez un nouveau fichier nommé promtail.yml en utilisant l'éditeur nano.
nano promtail.yml
Maintenant, copiez et collez la configuration suivante dans l'éditeur nano.
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://loki:3100/loki/api/v1/push
scrape_configs:
- job_name: varlogs
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/*.log
Décortiquons cette configuration :
server: Configure le propre serveur web de Promtail, qui n'est pas utilisé dans ce laboratoire.positions: Spécifie un fichier où Promtail enregistre la dernière position de lecture dans chaque fichier journal, afin de ne pas renvoyer d'anciens logs lors d'un redémarrage.clients: Définit l'adresse de l'instance Loki. Nous utilisonshttp://loki:3100car Promtail et Loki s'exécuteront sur le même réseau Docker, etlokiest le nom du conteneur.scrape_configs: C'est la section principale. Nous définissons unjobnommévarlogsqui scrape (récupère) tous les fichiers se terminant par.logdans le répertoire/var/log/.
Après avoir collé le contenu, enregistrez le fichier et quittez nano en appuyant sur Ctrl+X, puis Y, et enfin Enter.
Exécuter le Conteneur Promtail Pointant vers Loki
Dans cette étape, vous allez démarrer le conteneur Promtail en utilisant le fichier de configuration que vous venez de créer. La commande montera à la fois votre fichier de configuration et le répertoire des logs de l'hôte dans le conteneur.
Exécutez la commande docker run suivante pour démarrer Promtail :
docker run -d --name promtail --network monitoring-net -v $(pwd)/promtail.yml:/etc/promtail/config.yml -v /var/log:/var/log grafana/promtail:3.5.0 -config.file=/etc/promtail/config.yml
Voici une explication des options de la commande :
-d: Exécute le conteneur en mode détaché (en arrière-plan).--name promtail: Attribue un nom au conteneur pour une référence facile.--network monitoring-net: Connecte le conteneur au même réseau que Loki et Grafana.-v $(pwd)/promtail.yml:/etc/promtail/config.yml: Monte votrepromtail.ymllocal dans le conteneur à l'emplacement attendu.-v /var/log:/var/log: Monte le répertoire/var/logde l'hôte dans le conteneur afin que Promtail puisse lire les fichiers journaux.-config.file=/etc/promtail/config.yml: Indique au processus Promtail à l'intérieur du conteneur quel fichier de configuration utiliser.
Après avoir exécuté la commande, Docker affichera l'identifiant unique du nouveau conteneur. Vous pouvez vérifier que le conteneur est en cours d'exécution avec la commande docker ps.
docker ps
Vous devriez voir promtail, loki et grafana dans la liste des conteneurs en cours d'exécution.
Après le démarrage du collecteur, écrivez un nouveau message de test. printf affiche le message et sudo tee -a l’ajoute au fichier journal appartenant à root. L’option -a conserve les journaux existants.
printf 'labex test message\n' | sudo tee -a /var/log/test.log
Promtail découvre le fichier et envoie le message à Loki. Attendez quelques secondes pour le premier lot. Le port 9080 est interne à Promtail ; la commande ne le publie pas sur la VM.
Ajouter Loki comme source de données dans Grafana
Dans cette étape, vous connecterez Grafana au service Loki que vous avez démarré.
Sélectionnez l’onglet Grafana du laboratoire après la réussite des contrôles de santé. Si la connexion intégrée est bloquée, utilisez la commande d’ouverture dans le navigateur. Connectez-vous avec le nom d’utilisateur admin et le mot de passe admin, puis cliquez sur Skip sur l’écran de changement de mot de passe. Ces identifiants sont réservés à ce laboratoire temporaire.
Ouvrez Connections → Data sources, cliquez sur Add data source, puis sélectionnez Loki. Définissez Name sur Loki. Sous Connection, définissez URL sur :
http://loki:3100
Le nom d’hôte loki est résolu dans le réseau Docker partagé ; Grafana peut donc joindre Loki directement. Votre navigateur n’a pas besoin de résoudre ce nom de conteneur.
Cliquez sur Save & test. Attendez le message Data source successfully connected. avant de continuer. Il confirme que Grafana peut interroger Loki.
Interroger les Journaux de Base dans la Vue Explore de Grafana
Dans cette dernière étape, vous utiliserez la vue "Explore" de Grafana pour exécuter une requête simple et visualiser les logs que Promtail expédie depuis votre environnement.
- Dans l'interface utilisateur de Grafana, naviguez vers la barre latérale gauche et cliquez sur l'icône de boussole (Explore).
- En haut à gauche de la page Explore, vous verrez un menu déroulant pour sélectionner la source de données. Si elle n'est pas déjà sélectionnée, choisissez Loki.
- Vous verrez un champ de saisie "Log browser" (Navigateur de logs). C'est ici que vous écrivez vos requêtes LogQL.
- Cliquez sur le bouton "Code" pour passer à l'éditeur de code.
- Entrez la requête suivante dans le champ de saisie :
{job="varlogs"}
Cette requête LogQL sélectionne tous les flux de logs qui possèdent le label job avec la valeur varlogs. Nous avons défini ce label dans notre fichier promtail.yml.
6. Appuyez sur Shift+Enter ou cliquez sur le bouton bleu Run query (Exécuter la requête) sur le côté droit de l'écran.
Après avoir exécuté la requête, vous devriez voir des lignes de logs apparaître dans le panneau principal sous l'éditeur de requête. Vous verrez les logs provenant de divers fichiers dans /var/log. Cela confirme que Promtail collecte les logs avec succès et les envoie à Loki, et que Grafana est capable de les interroger.
La requête générale peut renvoyer de nombreux messages système. Pour retrouver votre message, ajoutez le filtre de lignes LogQL |=. Il conserve les lignes contenant le texte entre guillemets :
{job="varlogs"} |= "labex test message"
Cliquez à nouveau sur Run query. Vérifiez que labex test message apparaît dans les résultats. Cela prouve que le collecteur, Loki et Grafana fonctionnent ensemble.
Résumé
Félicitations ! Vous avez configuré avec succès un pipeline de journalisation (logging pipeline) de base utilisant Loki, Promtail et Grafana.
Dans ce laboratoire, vous avez appris à :
- Tirer (Pull) et exécuter des conteneurs Docker pour des outils de traitement de logs comme Promtail.
- Créer un fichier de configuration Promtail pour spécifier un serveur Loki et définir des tâches de collecte de logs (log scraping jobs).
- Utiliser le réseau Docker pour connecter les services (Promtail, Loki et Grafana).
- Ajouter Loki comme source de données dans l'interface utilisateur de Grafana.
- Exécuter une requête LogQL de base dans la vue Explore de Grafana pour trouver et inspecter vos logs.
Cette configuration constitue la base d'un système d'agrégation de logs puissant, évolutif et rentable. À partir de là, vous pourriez explorer des requêtes LogQL plus avancées, l'analyse des logs (log parsing) et la configuration d'alertes dans Grafana basées sur le contenu des logs.



