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.
L'environnement de ce laboratoire a déjà démarré les conteneurs Loki et Grafana pour vous. Votre tâche consiste à configurer et exécuter Promtail pour envoyer les logs système à Loki, puis à les visualiser dans Grafana.
Tirer l'Image Docker Promtail pour la Collecte de Logs
Dans cette étape, vous allez télécharger l'image Docker officielle pour Promtail. Promtail est l'agent responsable de la découverte des fichiers journaux et de l'envoi de leur contenu à Loki. Nous l'exécuterons en tant que conteneur Docker pour maintenir notre configuration propre et isolée.
Exécutez la commande suivante dans votre terminal pour télécharger l'image Promtail depuis Docker Hub.
docker pull grafana/promtail
Vous verrez une sortie indiquant la progression du téléchargement pour chaque couche de l'image. Une fois terminé, l'image sera disponible sur votre machine locale.
Using default tag: latest
latest: Pulling from grafana/promtail
Digest: sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Status: Downloaded newer image for grafana/promtail
docker.io/grafana/promtail
Maintenant que nous avons l'image, nous pouvons passer à la création d'un fichier de configuration pour celle-ci à l'étape suivante.
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 -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.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
... grafana/promtail "/usr/bin/promtail -c…" A few seconds ago Up a few seconds 0.0.0.0:9080->9080/tcp promtail
... grafana/grafana "/run.sh" About a minute ago Up About a minute 0.0.0.0:8080->3000/tcp grafana
... grafana/loki "/usr/bin/loki -conf…" About a minute ago Up About a minute 0.0.0.0:3100->3100/tcp, 9095/tcp loki
Ajouter Loki comme Source de Données dans Grafana
Dans cette étape, vous allez configurer Grafana pour utiliser Loki comme source de données. Cela vous permettra d'interroger et de visualiser les logs que Promtail envoie à Loki.
Veuillez suivre attentivement ces instructions :
En raison des paramètres de proxy inverse de la VM LabEx, passez à l'interface de bureau (Desktop Interface), cliquez sur le navigateur Firefox dans le coin supérieur gauche, et entrez
http://localhost:8080dans la barre d'adresse. Vous devriez voir la page de connexion de Grafana.Connectez-vous à Grafana. Utilisez le nom d'utilisateur
adminet le mot de passeadmin. Il pourrait vous être demandé de changer le mot de passe ; vous pouvez ignorer cette étape pour le laboratoire.Dans le menu de gauche, cliquez sur l'icône Connections (qui ressemble à une prise ou un connecteur).
Sur la page Connections, cliquez sur Data sources (Sources de données).
Sur la page Data sources, cliquez sur le bouton Add new data source (Ajouter une nouvelle source de données).
Dans la liste des types de sources de données disponibles, sélectionnez Loki.
Dans la boîte de recherche, tapez
Lokiet cliquez sur l'option de source de données Loki qui apparaît.Vous serez redirigé vers la page de configuration de la source de données Loki. Dans le champ URL sous la section HTTP, entrez l'adresse suivante :
http://loki:3100Nous utilisons
lokicomme nom d'hôte car les conteneurs Grafana et Loki sont sur le même réseau Docker (monitoring-net), et Docker assure la résolution DNS entre les conteneurs sur le même réseau.Faites défiler vers le bas et cliquez sur le bouton Save & test (Enregistrer et tester).

Si tout est configuré correctement, vous verrez une bannière verte avec le message "Data source is working" (La source de données fonctionne). Vous avez maintenant connecté avec succès Grafana à votre instance 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
jobavec la valeurvarlogs. Nous avons défini ce label dans notre fichierpromtail.yml.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.
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.



