NerdLog - Visionneuse TUI rapide de logs multi-hôtes avec histogramme chronologique
(github.com/dimonomid)- Visionneuse TUI de logs multi-hôtes rapide et économe en ressources, permettant la collecte et l’analyse de logs distants uniquement via des connexions SSH, sans serveur central
- Visualisation par histogramme chronologique et filtrage temporel pour comprendre facilement le flux des logs
- Prend en charge un traitement rapide et un déploiement simple à l’aide d’une combinaison basique de
awk,tailethead - Les requêtes sur les logs sont traitées à distance sans téléchargement local, ce qui minimise l’usage du réseau et optimise le traitement de gros volumes de logs
- Simple par défaut, mais extensible via divers fichiers de configuration, la config SSH et les interactions UI
Présentation de Nerdlog
- Nerdlog est une visionneuse de logs en interface texte qui fonctionne sans serveur central
- Il permet d’analyser les logs comme Graylog/Kibana, mais constitue une alternative légère sans la charge d’installation et de maintenance
- Le développement initial est né d’une déception face à la lenteur et à l’inefficacité de Splunk
- Il est optimisé pour filtrer et visualiser simultanément les logs de plusieurs serveurs distants
- Principalement conçu pour traiter les logs système (
/var/log/messages,/var/log/syslog), mais prend aussi en charge d’autres formats - Il peut traiter rapidement de gros fichiers de logs de plus de 1 Go
- Son objectif principal est de maximiser la vitesse et l’efficacité de la consultation de logs multi-nœuds
Caractéristiques de conception
- Fonctionne sans serveur central, en créant une connexion SSH pour chaque nœud et en la maintenant ouverte
- Au lieu de télécharger l’ensemble des logs, il ne transmet par requête qu’au maximum 250 messages de log et les données d’histogramme
- Fusionne toutes les réponses pour fournir une vue unifiée
- Utilise la compression Gzip pendant le transfert afin de réduire le coût réseau
État du projet et historique
- Créé en 2022 lors d’un hackathon personnel comme alternative à Splunk trop lent, puis publié en open source en 2025
- Implémenté rapidement, avec présence de spaghetti code et couverture de tests insuffisante
- Testé en usage réel uniquement sous Linux
- Encore au stade de proof of concept, mais déjà suffisamment rapide et stable pour une utilisation concrète
Résumé de l’utilisation
- Au lancement de l’application, une zone de saisie de requête apparaît
- Un logstream désigne des fichiers de logs continus sur des serveurs accessibles via SSH
- Il est possible d’indiquer le port SSH, le chemin des fichiers de logs, etc., ou d’utiliser la config SSH et un fichier de configuration séparé
- L’expression Select field permet de spécifier en style SQL les champs à afficher dans l’UI
Exemple :
myuser@myserver.com
myuser@myserver.com:1234:/some/other/logfile
Exemple de fichier de configuration (~/.config/nerdlog/logstreams.yaml) :
log_streams:
myhost-01:
hostname: actualhost1.com
port: 1234
user: myuser
log_files:
- /some/custom/logfile
Composition de l’UI
- Filtre de saisie de motifs Awk : prise en charge de
/foo/,( /bar/ || /baz/ ) && !/qux/, etc. - Bouton Edit : ouvre la fenêtre de saisie de la requête complète
- Bouton Menu : fournit des fonctions comme retour, avance, copie de requête, etc.
- Histogramme : visualisation de la densité des logs par période et sélection de plage temporelle possible
- Tableau des logs : les logs les plus récents apparaissent en bas, avec défilement horizontal à droite pour voir les champs détaillés
- Barre d’état :
- Vert : nombre de logstreams connectés et en attente
- Orange : nombre de logstreams actuellement en cours de requête
- Rouge : nombre de logstreams en cours de connexion
- Chiffres à droite : nombre total de logs correspondants / nombre de logs actuellement chargés / position du curseur
- Ligne de commande : accessible avec la touche
:et permet la saisie de commandes de style Vim
Navigation
- Touches générales :
Tab,Shift+Tab,Enter,Esc,PgUp,PgDn, etc. - Touches de style Vim :
h,j,k,l,g,G,Ctrl+U,Ctrl+D,i,a, etc. - Dans les champs de saisie, l’historique peut être parcouru avec
Up,Down,Ctrl+P,Ctrl+N Ctrl+K,Ctrl+J: parcourent l’historique complet des requêtes
Commandes principales
:xcou:xclip: copie dans le presse-papiers l’état actuel de la requête sous forme de chaîne de commandenerdlog --lstreams 'localhost' --time -3h --pattern '/something/':back,:fwd: naviguent vers la requête précédente/suivante comme dans un navigateur:edit: ouvre la fenêtre d’édition de requête:write [filename]: enregistre les logs actuellement chargés dans un fichier:reconnect,:disconnect: reconnexion / déconnexion des logstreams:set option=valeur: modifie les paramètres (numlines,timezone, etc. pris en charge):q: quitte le programme
Prérequis
- Un accès SSH aux hôtes distants est requis
- Un agent SSH doit être en cours d’exécution en local
- Les hôtes doivent avoir gawk installé ; mawk n’est pas pris en charge
- Un service d’écriture de logs système comme
rsyslogdoit être en cours d’exécution pour que/var/log/syslogsoit utilisable - Voir la section Requirements and limitations pour plus de détails
Conclusion
- Nerdlog est un outil efficace pour consulter rapidement et visuellement des logs distants sans installation
- Il ne nécessite pas de configuration complexe et permet une analyse en temps réel tout en économisant les ressources réseau
- C’est un outil d’analyse de logs particulièrement idéal pour les utilisateurs de Vim ou les adeptes des outils CLI
1 commentaires
Commentaires sur Hacker News
journalctln’est mentionné qu’une seule fois, ce qui laisse entendre que les logs doivent être stockés en texte brut dans l’ancien sysloglogrotatejournaldlui-même a des capacités intégrées pour recevoir des logs depuis des hôtes distants et les rechercher (avec--merge)