RousselTMLEARNING

Observabilité

Grafana Loki : le système de logs inspiré de Prometheus

Découvrir Grafana Loki : philosophie d'indexation par labels, architecture (distributor, ingester, querier, compactor), comparaison avec Elasticsearch, modes de déploiement et cas d'usage.

1. Pourquoi Loki ? #

Une philosophie différente d'Elasticsearch.

Indexer les labels, pas le contenu #

Loki est un système d'agrégation de logs créé par Grafana Labs, inspiré de Prometheus. Là où Elasticsearch construit un index inversé de chaque mot, Loki n'indexe que les labels d'un flux de logs (app, namespace, env...). Le contenu des lignes est simplement compressé et stocké, puis filtré à la lecture. Résultat : un index minuscule, un stockage peu coûteux et une exploitation plus simple.

Principe d'indexation de Loki
Les labels servent à choisir des flux ; le contenu est filtré à la volée.
CritèreLokiElasticsearch / ELK
IndexLabels uniquementIndex inversé plein texte
Coût de stockageFaible (chunks compressés, stockage objet)Élevé (index volumineux, disques rapides)
Recherche plein texteFiltrage à la lecture (grep distribué)Très rapide grâce à l'index
Intégration métriquesLogQL proche de PromQL, métriques depuis les logsAgrégations propres à Elastic
ExploitationPlus simple, stateless en grande partiePlus complexe (shards, mappings)

2. L'architecture #

Chemin d'écriture, chemin de lecture.

Les composants #

Composants de Loki
Chaque composant peut être mis à l'échelle indépendamment en mode microservices.
ComposantRôle
DistributorReçoit les logs, valide, répartit les flux vers les ingesters (hash des labels)
IngesterGarde les logs récents en mémoire + WAL, construit les chunks puis les envoie au stockage
Query FrontendDécoupe et met en cache les requêtes, file d'attente équitable
QuerierExécute les requêtes sur les ingesters (récent) et le stockage (historique)
CompactorCompacte les index, applique la rétention et les suppressions
RulerÉvalue les règles d'alerte et d'enregistrement LogQL
Index GatewaySert l'index aux queriers (optionnel)

3. Les modes de déploiement #

Du laptop à la production massive.

Trois modes #

ModePrincipeQuand l'utiliser
Monolithique (-target=all)Un seul binaire, tous les composantsTests, petits volumes (< ~20 Go/jour)
Simple Scalable (read / write / backend)Trois groupes de composants à mettre à l'échelleProduction moyenne, jusqu'à quelques To/jour
MicroservicesChaque composant est un déploiement distinctTrès grands volumes, contrôle fin
# Un même binaire, plusieurs cibles
loki -config.file=loki.yaml -target=all          # monolithique
loki -config.file=loki.yaml -target=write        # simple scalable : chemin d'écriture
loki -config.file=loki.yaml -target=read         # lecture
loki -config.file=loki.yaml -target=backend      # compactor, ruler, index gateway
loki -config.file=loki.yaml -modules             # lister les modules

Cas d'usage #

  • Logs d'applications et de conteneurs collectés depuis Kubernetes avec les mêmes labels que les métriques Prometheus.
  • Corrélation : passer d'une alerte ou d'une métrique aux logs correspondants dans Grafana en un clic.
  • Métriques à partir des logs : compter des erreurs, calculer des latences depuis des logs d'accès.
  • Audit et sécurité : conservation longue durée à faible coût.
Bonne Pratique : Si vous cherchez très souvent des mots rares dans des téraoctets de logs sans connaître le flux, un moteur plein texte restera plus rapide. Loki excelle quand on part d'un contexte (service, pod, environnement).

Articles liés

Installer Grafana Loki (Docker Compose, binaire et Helm)

Installer et valider Grafana Loki : configuration minimale, Docker Compose avec Grafana et Alloy, installatio…

Collecter des logs vers Loki : Alloy, Promtail, Docker et OpenTelemetry

Envoyer des logs vers Loki : Grafana Alloy, Promtail, driver Docker, OTLP, bons labels, parsing et enrichisse…

LogQL (1/2) : requêter les logs (sélecteurs, filtres et parsers)

Apprendre LogQL : sélecteurs de flux, filtres de ligne, parsers json/logfmt/pattern/regexp, filtres de labels…

Pour aller plus loin