Filtrer les journaux par plage horaire
Dans cette étape, vous apprendrez à filtrer les journaux des conteneurs Docker selon une plage horaire spécifique. Cette fonctionnalité est utile pour examiner les journaux d'une période particulière, par exemple lors d'un incident ou d'un déploiement spécifique.
La commande docker logs
propose des options pour filtrer les journaux par temps. Nous allons à nouveau utiliser le conteneur alpine
. S'il n'est pas en cours d'exécution, démarrez-le avec la même commande que précédemment :
docker run -d --name mylogger alpine sh -c 'while true; do echo "INFO: Hello from mylogger at $(date)"; sleep 5; echo "WARNING: Something is happening at $(date)"; sleep 5; echo "ERROR: An error occurred at $(date)"; sleep 5; done'
Laissez le conteneur s'exécuter pendant une ou deux minutes pour générer des journaux.
Pour afficher les journaux générés depuis une heure spécifique, utilisez l'option --since
. Le temps peut être spécifié dans différents formats, notamment un timestamp (secondes depuis epoch), un temps relatif (par exemple 10m
pour 10 minutes, 1h
pour 1 heure), ou une chaîne de date/heure.
Affichons les journaux générés durant les 2 dernières minutes :
docker logs --since 2m mylogger
Cette commande affichera toutes les entrées de journal du conteneur mylogger
générées dans les 2 dernières minutes.
Vous pouvez également spécifier une heure de début et de fin en utilisant --since
et --until
. L'option --until
fonctionne de manière similaire à --since
, vous permettant de spécifier une heure jusqu'à laquelle vous souhaitez voir les journaux.
Pour afficher les journaux générés entre il y a 5 minutes et il y a 1 minute :
docker logs --since 5m --until 1m mylogger
Cette commande affichera les journaux de la plage horaire spécifiée. Notez que le résultat exact dépendra du moment où vous exécutez la commande et de la durée d'exécution du conteneur.
Vous pouvez également utiliser des timestamps spécifiques. Pour obtenir le timestamp actuel, vous pouvez utiliser la commande date +%s
.
Obtenons le timestamp d'il y a 1 minute :
date -d "1 minute ago" +%s
Maintenant, utilisez ce timestamp avec --until
pour voir les journaux jusqu'à il y a 1 minute :
docker logs --until $(date -d "1 minute ago" +%s) mylogger
Cette commande affichera les journaux depuis le démarrage du conteneur jusqu'à il y a 1 minute.
Le filtrage par plage horaire est un moyen puissant de cibler votre analyse des journaux et de vous concentrer sur les événements pertinents.
Enfin, arrêtez et supprimez le conteneur :
docker stop mylogger
docker rm mylogger