Aller au contenu

Afficher les logs de plusieurs pods avec Stern

Mise à jour :

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.

Installation de stern

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.

Sur Linux et macOS (via Homebrew)

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

Terminal window
brew install stern

Tous les systèmes d’exploitation

Vous pouvez aussi l’installer directement avec Go :

Terminal window
go install github.com/stern/stern@latest

Vérification de l’installation

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

Terminal window
stern --version
version: dev

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

Afficher les logs de plusieurs pods

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 !

Afficher les logs d’un groupe de pods

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 :

Terminal window
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> :

Terminal window
stern deployment/nginx

Filtrer les logs par namespace

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

Terminal window
stern nginx -n mon-namespace

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

Terminal window
stern nginx -A

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 :

Terminal window
stern nginx --all-containers

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

Terminal window
stern nginx -c mon-container

Et pour exclure un container spécifique :

Terminal window
stern nginx --exclude-container sidecar

Gérer la quantité de logs affichés

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

Terminal window
stern nginx --tail 100

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

Terminal window
stern nginx --since 10m

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

Terminal window
stern nginx --no-follow

Filtrer les logs avec des expressions régulières

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

Terminal window
stern nginx -i "ERROR|WARN"

Cela affichera uniquement les lignes contenant ERROR ou WARN.

À l’inverse, pour ignorer certains logs :

Terminal window
stern nginx -e "DEBUG|TRACE"

Personnaliser l’affichage

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

Terminal window
stern nginx --color always

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

Terminal window
stern nginx -o json # Affichage en JSON
stern nginx -o raw # Affichage brut

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

Terminal window
stern nginx --template '{{.PodName}}/{{.ContainerName}}: {{.Message}}'

Autres options utiles

  • Afficher les logs d’un pod spécifique qui tourne sur un nœud particulier :

    Terminal window
    stern nginx --field-selector spec.nodeName=mon-noeud
  • Afficher uniquement les logs des pods en erreur :

    Terminal window
    stern nginx --condition=ready=false --tail=0
  • Exclure des pods spécifiques :

    Terminal window
    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 !

Conclusion

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 !

Plus d’infos