Surveillance des logs avec Loki
Objectifs du chapitre et prérequis
1. Contexte et prérequis
Prometheus est très efficace pour ingérer des métriques. Toutefois, il n’est pas toujours possible de disposer de ces dernières. D’autre part, les journaux (ou logs) d’activités des applications ou composants d’un système sont souvent une source d’informations intéressantes à collecter ou à scruter pour en extraire des métriques.
Ce chapitre est une rapide introduction à Loki et à la mise en place de son agent Promtail. Quelques techniques seront abordées afin d’alimenter les métriques de Prometheus à l’aide de motifs de recherche ou à l’aide de requêtes LogQL (qui reprend de nombreux principes de PromQL), ainsi que l’intégration de cet outil à Grafana.
2. Fichiers téléchargeables
Vous pouvez récupérer les exemples sur le repository GitHub suivant : https://github.com/EditionsENI/prometheus-grafana
Vous pouvez également récupérer ces fichiers dans l’archive chapitre-17.tar.gz sur la page du livre sur le site des Éditions ENI.
À propos de Loki
1. Origine de Loki
Loki est un projet open source initié par Grafana Labs en 2018. Il fut annoncé lors de la KubeCon (Kubernetes Conference) de Seattle la même année. Il est né d’un constat simple : la gestion centralisée des logs dans des environnements cloud-native devenait de plus en plus complexe et coûteuse.
Avant Loki, la majorité des solutions reposaient sur l’utilisation de la stack ELK (Elasticsearch, Logstash, Kibana). Si Elasticsearch est extrêmement puissant pour la recherche de texte libre, il présente plusieurs inconvénients :
-
indexation lourde ;
-
forte consommation de ressources (CPU, mémoire, stockage) ;
-
complexité d’exploitation à grande échelle.
Partant de ce constat, Grafana Labs a développé sa propre solution avec les objectifs suivants :
-
s’inspirer du fonctionnement de Prometheus (notamment sur les labels et le mécanisme d’index) ;
-
ne pas indexer le contenu des logs.
L’idée derrière ces principes est simple : Prometheus est responsable de récupérer des métriques afin d’indiquer des tendances sur l’état d’un système. Lorsqu’une anomalie est repérée, l’opérateur bascule ensuite sur les journaux d’activités stockés dans Loki afin d’affiner le diagnostic.
Étant donné que Prometheus et Loki partagent les mêmes labels sur les données emmagasinées, cette bascule peut se faire très facilement.
Si on compare ce mode de fonctionnement à celui d’Elasticsearch, cette approche a plusieurs avantages :
-
Il n’est plus utile d’indexer le contenu des logs : les données sont simplement ingurgitées.
-
Il n’est plus utile de connaître à l’avance la structure des logs : en effet, elles sont stockées à l’état brut.
Loki permet également de stocker ses données dans du stockage objet (buckets S3 - AWS Simple Storage Service) pour un coût plus faible comparé à l’utilisation de disque classique.
2. Mise en place de Loki
a. Mode d’exécution
Malgré cette simplicité, l’installation de Loki dans un environnement...