bzegrep sous Ubuntu : analyser vos archives bz2 directement

Présentation générale

L’analyse de volumineux fichiers journaux archivés au format bzip2 pose souvent un problème de stockage et de latence lorsqu’il faut tout extraire au préalable. Ce tutoriel pratique aborde le fonctionnement de bzegrep sous Linux, un utilitaire performant permettant d’interroger directement des flux compressés sans décompression sur disque, des filtres élémentaires jusqu’aux expressions régulières complexes.

Préparation de l’environnement et déploiement de bzip2

Afin de pratiquer les commandes présentées, assurez-vous d’abord d’installer l’ensemble des utilitaires associés au paquet bzip2.

Mise à jour du cache APT et installation du paquet bzip2

Créez un dossier temporaire dédié à ce laboratoire puis positionnez-vous à l’intérieur via mkdir -p /tmp/bzegrep-lab && cd /tmp/bzegrep-lab.

Création et bascule vers le répertoire de travail /tmp/bzegrep-lab

Générez ensuite un jeu d’enregistrements représentatif au sein du fichier app.log pour alimenter nos essais de filtrage.

Génération du fichier de trace app.log avec plusieurs niveaux de criticité

Pour archiver la source tout en conservant l’original sur le disque, appliquez la commande bzip2 -k app.log.

Compression de app.log tout en conservant le fichier source via l’option -k

Vérifiez la bonne création ainsi que la taille du livrable généré à l’aide de ls -lh app.log.bz2.

Vérification des détails du fichier compressé app.log.bz2

Recherche textuelle directe dans une archive bz2

Pour entamer les manipulations, rejoignez l’espace de test configuré précédemment en lançant cd /tmp/bzegrep-lab.

Accès au répertoire de manipulation

L’utilitaire bzegrep permet de cibler directement le motif ERROR au sein de app.log.bz2 sans aucune phase de décompression intermédiaire.
Les incidents correspondants s’affichent immédiatement dans le flux de sortie en lisant l’archive à la volée.

Recherche du mot-clé ERROR dans le fichier compressé app.log.bz2

Afin d’ignorer la casse des caractères lors du tri, spécifiez le paramètre -i pour détecter le terme warn.
Bien que saisi en minuscules, l’enregistrement balisé WARN est parfaitement extrait.

Filtrage insensible à la casse avec l’option -i

Pour faire apparaître l’emplacement d’origine de chaque entrée, associez l’option -n à votre recherche sur Database.
Le terminal renvoie le résultat précédé de son index d’origine dans le flux non compressé, ici la ligne 3.

Localisation de l’événement avec affichage du numéro de ligne via -n

Filtrage avancé avec les expressions régulières étendues (ERE)

Poursuivez les tests en vous assurant d’être positionné dans l’espace de démonstration avec cd /tmp/bzegrep-lab.

Navigation vers le dossier de travail

Grâce à la prise en charge des expressions régulières étendues via la barre verticale (|), vous pouvez rechercher simultanément plusieurs critères comme ERROR et FATAL dans app.log.bz2.
Les anomalies fonctionnelles et pannes critiques sont ainsi extraites au cours d’une seule exécution.

Filtrage multi-critères avec l’opérateur booléen ERE ERROR|FATAL

Il est également possible de structurer un masque exigeant un format de date en tête de ligne suivi de mentions WARN ou ERROR.
Cette syntaxe rigoureuse filtre le flux pour ne retenir que les messages conformes à l’empreinte chronologique demandée.

Extraction combinant un format de date en début de ligne et des niveaux de sévérité

Pour masquer le bruit informatif quotidien et se concentrer sur les anomalies, l’option -v inverse la correspondance en excluant systématiquement les messages INFO.
Les alertes mineures et dysfonctionnements majeurs ressortent alors sans être noyés dans la télémétrie habituelle.

Exclusion des traces informatives grâce à l’inversion de sélection -v

Traitement par lots sur plusieurs archives et affichage des sources

Revenez dans le répertoire d’expérimentation avec l’instruction cd /tmp/bzegrep-lab.

Repositionnement dans le dossier d’exercice

Afin d’éprouver la recherche multi-fichiers, créons une seconde source de traces baptisée worker.log.

Génération d’un second fichier journal worker.log

Compressez ce nouveau fichier de diagnostic en exécutant bzip2 worker.log.

Compression de la source worker.log

Lors d’un scan étendu à l’ensemble des conteneurs (*.bz2), l’option -H force l’affichage du nom de l’archive devant chaque ligne identifiée avec le motif ERROR.
Chaque anomalie repérée est ainsi explicitement rattachée à son conteneur d’origine.

Balayage global des archives bz2 avec rappel du fichier source via -H

Si vous désirez uniquement dresser l’inventaire des archives concernées sans charger le terminal avec le texte complet, utilisez le commutateur -l.
Seule la liste succincte des fichiers hébergeant le mot-clé ERROR est alors renvoyée.

Affichage exclusif des noms d’archives contenant l’anomalie avec -l

Enfin, pour évaluer l’ampleur d’un incident, l’option -c fournit un décompte statistique du nombre de correspondances relevées dans chaque fichier.
Le volume des événements associés à ERROR apparaît alors sous forme chiffrée par conteneur.

Comptabilisation des occurrences de l’erreur par archive à l’aide de -c

Ce tour d’horizon met en lumière la rapidité et la flexibilité de bzegrep sous Ubuntu pour inspecter des archives bz2 sans phase préalable d’extraction.
L’intégration de cet outil dans vos procédures d’analyse de logs vous épargnera d’importantes ressources disque tout en réduisant considérablement vos temps d’investigation.