Loading search data...

Homelab - Centralisation des logs de votre cluster kubernetes k3s avec loki/Grafana

Après avoir parlé de stern qui permettait de centraliser les logs dans la console, je suis parti en recherche d’un outil permettant de centraliser ses logs dans une interface WEB. On connaît tous ELK, mais je suis à la recherche de quelques choses de plus léger et de moins gourmand en ressources. Et je suis tombé sur loki, un outil développé par Grafana Labs.

Découverte de la stack loki

On retrouve :

  • promtail : l’agent de collecte des logs qui les envoie ensuite sur l’instance loki
  • loki : le serveur de logs et de processing

architecture de loki

Quand on regarde le fichier de conf de Promtail on remarque tout de suite que cela ressemble énormément à celui de Prometheus. En effet, on retrouve la notion de jobs de scraping.

Installation de Loki et Promtail sur notre cluster kubernetes k3s

Comme pour Grafana et Prometheus je vais utiliser les charts Helm officiels. Je vais l’installer dans le namespace de prometheus.

helm repo add grafana https://grafana.github.io/helm-charts
help repo update

Déploiement de Loki

helm repo add grafana https://grafana.github.io/helm-charts

Déploiement de Promtail

En regardant le fichier de conf de promtail on voit tout de suite que tout est présent pour remonter les logs de tous les conteneurs de la stack. Il va chercher les logs des pods sur le node dans le répertoire /var/log/pods/. Pas besoin d’y toucher. On peut donc déployer directement sans toucher le template puisque par défaut juste loki et promtail seront déployés. Par contre, nous allons modifier l’adresse du serveur loki. Pour cela on récupère le fichier de valeurs

helm show values grafana/promtail >>promtail-values.yml
vi promtail-values.yml

Remplacer dans ma section config la valeur lokiAddress: http://loki-gateway/loki/api/v1/push par lokiAddress: http://loki.prometheus/loki/api/v1/push. loki.prometheus correspond au nom du service loki suivi du namespace dans lequel il est installé.

Sauvegardez et installer la release :

helm upgrade --install promtail grafana/promtail --set "loki.serviceName=loki" -f promtail-values.yml

Installation du datasource loki

Maintenant allez dans Grafana et ajouter le datasource loki

Dans Grafana allez dans configuration / datasources et ajouter en un nouveau de type loki

add source loki

add source loki

Dans URL mettre : http://loki.prometheus:3100 et cliquer sur [Save and Test]

add source loki

Utilisation de loki

Il faut se rendre dans le menu explorer et choisir comme source loki :

test loki

Il y a un assistant pour saisir les labels. Cliquer sur logs browser et sélectionner ce qui vous intéresse.

test loki

Suivre les logs en direct

Dans la zone de refresh vous pouvez choisir live. Et vous voyez donc en direct les logs :)

live loki

Utilisation des filtres

En cliquant sur les filtres, vous pouvez déjà n’afficher que les erreurs.

filters loki

Dans la zone filtre il est possible d’utiliser les opérateurs suivants :

= egal.
!= non egal.
=~ match sur le regex.
!~ ne match pas sur le regex.

Exemple :

{name=~"mysql.+"}
{name!~"mysql.+"}

On peut également entrer une expression de recherche avec les opérateurs suivants :

|= ligne contient string.
!= ligne ne contient pas string.
|~ ligne matche sur l’expression régulière.
!~ ligne ne matche pas sur l’expression régulière.

Exemple (comme dans la copie d’écran ci-dessus) :

{container_name="blog"} != "kube-probe"

Avec tout cela on peut rapidement retrouver les erreurs !


Si vous avez apprécié cet article de blog, vous pouvez m'encourager à produire plus de contenu en m'offrant un café sur   Ko-Fi  . Vous pouvez aussi passer votre prochaine commande sur amazon, sans que cela ne nous coûte plus cher, via   ce lien  . Vous pouvez aussi partager le lien sur twitter ou linkedin via les boutons ci-dessous. Je vous remercie de votre soutien


Mots clés :

devops kubernetes k3s homelab

Autres Articles


Commentaires: