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.
| Critère | Loki | Elasticsearch / ELK |
|---|---|---|
| Index | Labels uniquement | Index inversé plein texte |
| Coût de stockage | Faible (chunks compressés, stockage objet) | Élevé (index volumineux, disques rapides) |
| Recherche plein texte | Filtrage à la lecture (grep distribué) | Très rapide grâce à l'index |
| Intégration métriques | LogQL proche de PromQL, métriques depuis les logs | Agrégations propres à Elastic |
| Exploitation | Plus simple, stateless en grande partie | Plus complexe (shards, mappings) |
2. L'architecture #
Chemin d'écriture, chemin de lecture.
Les composants #
| Composant | Rôle |
|---|---|
| Distributor | Reçoit les logs, valide, répartit les flux vers les ingesters (hash des labels) |
| Ingester | Garde les logs récents en mémoire + WAL, construit les chunks puis les envoie au stockage |
| Query Frontend | Découpe et met en cache les requêtes, file d'attente équitable |
| Querier | Exécute les requêtes sur les ingesters (récent) et le stockage (historique) |
| Compactor | Compacte les index, applique la rétention et les suppressions |
| Ruler | Évalue les règles d'alerte et d'enregistrement LogQL |
| Index Gateway | Sert l'index aux queriers (optionnel) |
3. Les modes de déploiement #
Du laptop à la production massive.
Trois modes #
| Mode | Principe | Quand l'utiliser |
|---|---|---|
Monolithique (-target=all) | Un seul binaire, tous les composants | Tests, petits volumes (< ~20 Go/jour) |
| Simple Scalable (read / write / backend) | Trois groupes de composants à mettre à l'échelle | Production moyenne, jusqu'à quelques To/jour |
| Microservices | Chaque composant est un déploiement distinct | Trè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 modulesCas 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).
