NerdLog - visor rápido de logs TUI multi-host con histograma de línea de tiempo
(github.com/dimonomid)- Visor de logs TUI multi-host rápido y eficiente en recursos que permite recopilar y analizar logs remotos solo con conexiones SSH, sin servidor central
- La visualización con histograma de línea de tiempo y el filtrado por tiempo facilitan entender el flujo de logs
- Usa una combinación básica de
awk,tailyheadpara ofrecer procesamiento de alta velocidad y despliegue sencillo - Las consultas de logs se procesan remotamente sin descarga local, minimizando el uso de red y optimizando el manejo de logs de gran volumen
- La base es simple, pero ofrece extensibilidad mediante diversos archivos de configuración, SSH config y controles de UI
Introducción a Nerdlog
- Nerdlog es un visor de logs con interfaz de texto que funciona sin servidor central
- Permite analizar logs como Graylog/Kibana, pero es una alternativa liviana sin la carga de instalación y mantenimiento
- La motivación inicial del desarrollo surgió por la decepción con Splunk, que era lento e ineficiente
- Está optimizado para filtrar y visualizar simultáneamente logs de varios servidores remotos
- Fue diseñado principalmente para procesar logs del sistema (
/var/log/messages,/var/log/syslog), aunque también soporta otros formatos - Puede procesar rápidamente logs grandes de más de 1 GB
- Su objetivo principal es maximizar la velocidad y eficiencia al consultar logs en múltiples nodos
Características de diseño
- Funciona sin servidor central y crea una conexión SSH para cada nodo, manteniéndola en espera
- En lugar de descargar todos los logs, solo transmite hasta 250 mensajes de log y datos del histograma por consulta
- Fusiona todas las respuestas para ofrecer una vista unificada
- Usa compresión Gzip durante la transferencia para reducir el costo de red
Estado e historia del proyecto
- Fue creado en 2022 como un hackatón personal para reemplazar a Splunk lento, y se publicó como open source en 2025
- Se implementó rápidamente, por lo que hay código espagueti y falta cobertura de pruebas
- Solo se ha probado en uso real en entornos Linux
- Está en fase de prueba de concepto, pero es lo bastante rápido y estable para uso real
Resumen de uso
- Al ejecutar la app aparece una ventana para ingresar la consulta
- Un logstream es el conjunto de archivos de log continuos de servidores accesibles por SSH
- Se pueden especificar el puerto SSH o la ruta de los archivos de log, o usar SSH config y un archivo de configuración aparte
- Select field expression permite definir en estilo SQL los campos que se mostrarán en la UI
Ejemplo:
myuser@myserver.com
myuser@myserver.com:1234:/some/other/logfile
Ejemplo de archivo de configuración (~/.config/nerdlog/logstreams.yaml):
log_streams:
myhost-01:
hostname: actualhost1.com
port: 1234
user: myuser
log_files:
- /some/custom/logfile
Componentes de la UI
- Filtro de entrada de patrón Awk: soporta
/foo/,( /bar/ || /baz/ ) && !/qux/, etc. - Botón Edit: abre la ventana de entrada de la consulta completa
- Botón Menu: ofrece funciones como ir atrás, ir adelante y copiar la consulta
- Histograma: visualiza la densidad de logs por franja horaria y permite seleccionar rangos de tiempo
- Tabla de logs: los logs más recientes aparecen abajo, y se puede desplazar horizontalmente para ver campos detallados
- Barra de estado:
- Verde: cantidad de logstreams conectados y en espera
- Naranja: cantidad de logstreams consultándose actualmente
- Rojo: cantidad de logstreams conectándose
- Números a la derecha: total de logs coincidentes / logs cargados actualmente / posición del cursor
- Línea de comandos: se accede con la tecla
:y permite ingresar comandos estilo Vim
Navegación
- Teclas generales:
Tab,Shift+Tab,Enter,Esc,PgUp,PgDn, etc. - Teclas estilo Vim:
h,j,k,l,g,G,Ctrl+U,Ctrl+D,i,a, etc. - Dentro de los campos de entrada,
Up,Down,Ctrl+P,Ctrl+Npermiten recorrer el historial Ctrl+K,Ctrl+J: recorren todo el historial de consultas
Comandos principales
:xco:xclip: copia al portapapeles el estado actual de la consulta como cadena de comandonerdlog --lstreams 'localhost' --time -3h --pattern '/something/':back,:fwd: ir a la consulta anterior/siguiente como en un navegador:edit: abrir la ventana de edición de consulta:write [filename]: guardar los logs cargados actualmente en un archivo:reconnect,:disconnect: reconectar / desconectar logstreams:set opción=valor: cambiar configuración (soportanumlines,timezone, etc.):q: salir del programa
Requisitos
- Se requiere acceso SSH a los hosts remotos
- El agente SSH debe estar ejecutándose localmente
- Los hosts deben tener gawk instalado; mawk no es compatible
- Debe estar ejecutándose un servicio de registro de logs del sistema como
rsyslogpara poder usar/var/log/syslog - Para más detalles, consultar Requirements and limitations
Cierre
- Nerdlog es una herramienta eficiente para revisar logs remotos de forma rápida y visual, sin instalación
- No requiere configuración compleja y permite análisis en tiempo real mientras ahorra recursos de red
- Es una herramienta de análisis de logs ideal especialmente para usuarios de Vim o quienes prefieren herramientas CLI
1 comentarios
Comentarios en Hacker News
--merge)