Publié le 7 décembre 2025 à 11h00. Un nouvel outil open source, hl, promet de révolutionner l’analyse de fichiers journaux volumineux grâce à sa vitesse d’indexation et de recherche, offrant une alternative performante aux solutions existantes pour les équipes DevOps.
hl, développé en Rust, atteint un débit allant jusqu’à 2 Go/s avec indexation automatique et 10 Go/s en réindexation.- L’outil permet de filtrer, rechercher, trier et formater les journaux avec une grande précision, y compris par plages de temps et champs spécifiques.
- Des fonctionnalités avancées, comme un mode suivi et la gestion des champs manquants, en font un allié précieux pour le débogage et la surveillance des applications.
Pour les ingénieurs DevOps confrontés à des fichiers journaux de plus en plus volumineux, l’analyse efficace de ces données est cruciale. L’outil hl (pour “highlight”) se positionne comme une solution rapide et flexible, capable de traiter des fichiers structurés au format JSON ou logfmt. Développé en Rust, un langage réputé pour ses performances, hl offre une indexation et une analyse rapides, permettant d’explorer des fichiers de plusieurs gigaoctets en un temps record, qu’ils soient compressés ou non.
Selon les tests de performance publiés par son créateur, hl atteint un débit impressionnant de jusqu’à environ 2 Go/s lors de l’analyse initiale avec indexation automatique, et jusqu’à 10 Go/s lors de la réindexation de fichiers en croissance. Ces chiffres suggèrent une amélioration significative par rapport à d’autres outils populaires tels que hlogf, humanlog, fblog et fblog-d, faisant de hl un choix pertinent pour les professionnels qui travaillent directement en ligne de commande.
L’outil ne se limite pas à la simple visualisation. Il intègre une interface de navigation similaire à la commande less, facilitant l’exploration des entrées de journaux. Il offre également un ensemble complet de fonctionnalités pour filtrer les données par niveau de journalisation (par exemple, error, warn, info), par champ spécifique (component=tsdb) ou par paire clé-valeur (request.method?!=GET). La gestion des plages de temps est également simplifiée grâce à des options telles que --since yesterday, --since -3h ou --until 'Jun 19 11:22:33'.
hl propose également des fonctionnalités avancées, comme un mode suivi comparable à la commande tail -f, avec un tri automatique des entrées basé sur l’horodatage, même en provenance de plusieurs sources (option -F). La sortie peut être personnalisée grâce à l’option -h, permettant de masquer ou d’afficher des champs spécifiques. L’outil gère également automatiquement les fuseaux horaires pour convertir les horodatages dans le fuseau souhaité et offre une prise en charge des thèmes et des jeux de couleurs pour une expérience utilisateur personnalisée.
La puissance de hl réside également dans sa capacité à créer des requêtes complexes en combinant des opérateurs logiques, de comparaison, basés sur des ensembles et des chaînes de caractères. Par exemple, la commande suivante combine un niveau de journalisation et deux filtres de champ :
hl my-service.log --query 'level > info or status-code >= 400 or duration > 0.5'
Les requêtes permettent également de spécifier comment gérer les champs manquants. Par exemple, hl my-service.log -q 'exists(.price)' ne renverra que les entrées de journal contenant le champ price, quelle que soit sa valeur. À l’inverse, hl my-service.log -q '.price?=3' affichera les entrées où le champ price est manquant ou égal à 3.
Récemment, lors d’une discussion sur les complexités de la configuration de Grafana sur Hacker News, un utilisateur nommé Solatic a souligné que hl constitue une alternative intéressante à des outils plus complexes comme Grafana Loki, notamment pour les scénarios simples impliquant une seule instance d’application. Il a ajouté :
« Si vous disposez de plusieurs machines, l’envoi de vos journaux à un seul endroit n’est peut-être pas nécessaire, mais c’est incroyablement utile ; l’alternative est essentiellement le multiplexage SSH. »
hl est disponible sous licence MIT et est compatible avec macOS, Linux et Windows.
