Aller au contenu
Conteneurs & Orchestration medium

Afficher les logs de plusieurs pods avec Stern

6 min de lecture

Stern

Lorsque je travaille avec Kubernetes, j’ai souvent besoin de suivre les logs de plusieurs pods en même temps. C’est là que stern devient indispensable ! Cet outil en ligne de commande me permet d’afficher en temps réel les logs de plusieurs pods correspondant à un même modèle. Plus besoin de jongler entre plusieurs commandes kubectl logs, stern fait tout le travail. Voyons comment l’utiliser efficacement.

Avant de profiter de stern, il faut bien sûr l’installer. Heureusement, c’est rapide et simple, quel que soit mon système d’exploitation.

Si vous utilisez Homebrew, l’installation est aussi simple que :

Fenêtre de terminal
brew install stern

Vous pouvez aussi l’installer directement avec Go :

Fenêtre de terminal
go install github.com/stern/stern@latest

Une fois installé, assurez-vous que stern fonctionne correctement :

Fenêtre de terminal
stern --version
version: dev

Si une version s’affiche, c’est bon ! Vous êtes prêt à explorer les logs de vos pods Kubernetes.

Avec stern, vous pouvez suivre en temps réel les logs de plusieurs pods** en une seule commande. Plus besoin de répéter kubectl logs pour chaque pod, stern s’occupe de tout !

L’argument principal de stern est une expression régulière qui permet de cibler plusieurs pods en même temps. Par exemple, pour suivre tous les pods dont le nom commence par nginx :

Fenêtre de terminal
stern nginx

Cela affichera en temps réel les logs de tous les pods correspondant à ce motif, avec des couleurs pour différencier chaque pod.

🔹 Si vous voulez cibler précisément un objet Kubernetes (comme un Deployment, un StatefulSet ou un Job), utilisez la syntaxe <ressource>/<nom> :

Fenêtre de terminal
stern deployment/nginx

Par défaut, stern affiche les logs des pods du namespace actif. Pour spécifier un autre namespace, utilisez -n :

Fenêtre de terminal
stern nginx -n mon-namespace

Si vous souhaitez afficher les logs de tous les namespaces, utilisez -A :

Fenêtre de terminal
stern nginx -A

Afficher les logs de tous les containers d’un pod

Section intitulée « Afficher les logs de tous les containers d’un pod »

Si un pod contient plusieurs containers, vous pouvez voir leurs logs avec l’option --all-containers :

Fenêtre de terminal
stern nginx --all-containers

Vous pouvez aussi filtrer par container grâce à l’option -c :

Fenêtre de terminal
stern nginx -c mon-container

Et pour exclure un container spécifique :

Fenêtre de terminal
stern nginx --exclude-container sidecar

Vous pouvez limiter le nombre de lignes affichées avec --tail :

Fenêtre de terminal
stern nginx --tail 100

Ou encore récupérer uniquement les logs des dernières minutes :

Fenêtre de terminal
stern nginx --since 10m

Si vous ne voulez pas suivre les logs en continu, ajoutez --no-follow :

Fenêtre de terminal
stern nginx --no-follow

Filtrer les logs avec des expressions régulières

Section intitulée « Filtrer les logs avec des expressions régulières »

Vous pouvez inclure ou exclure des logs spécifiques en utilisant -i et -e :

Fenêtre de terminal
stern nginx -i "ERROR|WARN"

Cela affichera uniquement les lignes contenant ERROR ou WARN.

À l’inverse, pour ignorer certains logs :

Fenêtre de terminal
stern nginx -e "DEBUG|TRACE"

Par défaut, stern colore automatiquement les logs pour identifier les pods. Vous pouvez modifier cette coloration avec --color :

Fenêtre de terminal
stern nginx --color always

Vous pouvez aussi choisir un format de sortie spécifique avec -o :

Fenêtre de terminal
stern nginx -o json # Affichage en JSON
stern nginx -o raw # Affichage brut

Si vous voulez un format personnalisé, utilisez un template :

Fenêtre de terminal
stern nginx --template '{{.PodName}}/{{.ContainerName}}: {{.Message}}'
  • Afficher les logs d’un pod spécifique qui tourne sur un nœud particulier :

    Fenêtre de terminal
    stern nginx --field-selector spec.nodeName=mon-noeud
  • Afficher uniquement les logs des pods en erreur :

    Fenêtre de terminal
    stern nginx --condition=ready=false --tail=0
  • Exclure des pods spécifiques :

    Fenêtre de terminal
    stern nginx --exclude-pod kube-apiserver

Avec ces options, stern devient un outil puissant pour suivre et analyser vos logs Kubernetes en temps réel !

Avec stern, suivre et analyser les logs Kubernetes devient bien plus efficace. Grâce à sa prise en charge des expressions régulières, ses nombreux filtres et ses options de mise en forme et de colorisation, vous pouvez afficher précisément ce qui vous intéresse, sans vous noyer dans un flot d’informations inutiles.

Que vous souhaitiez simplement surveiller un Deployment, suivre un debug précis, ou filtrer les erreurs d’un container spécifique, stern vous offre une lecture claire et organisée des logs, sans avoir à jongler avec des dizaines de commandes kubectl logs.

En optimisant l’affichage et en utilisant les bons filtres, vous gagnerez du temps et pourrez identifier rapidement les problèmes dans vos applications Kubernetes. Alors, à vous de jouer !