10 puntos por GN⁺ 2025-04-23 | 1 comentarios | Compartir por WhatsApp
  • 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, tail y head para 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+N permiten recorrer el historial
  • Ctrl+K, Ctrl+J: recorren todo el historial de consultas

Comandos principales

  • :xc o :xclip: copia al portapapeles el estado actual de la consulta como cadena de comando
    nerdlog --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 (soporta numlines, 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 rsyslog para 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

 
GN⁺ 2025-04-23
Comentarios en Hacker News
  • Gran trabajo. La TUI se ve realmente limpia y me gusta el histograma de la parte superior. Voy a jugar con esto hoy
  • Lo que aprendí hoy: los patrones de awk son más que simples expresiones regulares y se pueden combinar con operadores booleanos. He usado awk un poco, pero no sabía eso
  • Proyecto realmente genial. Me gusta especialmente la simplicidad del histograma de la línea de tiempo, el diseño remote-first y el enfoque TUI
    • He tenido dificultades similares al manejar logs de varios hosts, y como resultado terminé creando una herramienta llamada Logdy
    • Logdy está basado en la web y se enfoca en tailing en tiempo real, búsqueda en logs estructurados y filtrado rápido sobre múltiples fuentes. No requiere un servidor central
    • No intento hacer una comparación directa, pero si estás explorando este espacio, podría ser útil como enfoque complementario o para otros escenarios
    • Falta trabajar en agregar capacidades de consulta para múltiples hosts
    • En cualquier caso, aplausos para nerdlog. Siempre es bueno ver una herramienta concisa que no requiere ejecutar varios servicios
  • En la landing page se menciona journalctl una vez, lo que sugiere que los logs deben almacenarse en texto plano en el viejo syslog
    • No quiero guardar logs en texto plano ni usar soluciones antiguas como logrotate
    • journald por sí mismo tiene funcionalidad integrada para recibir logs de hosts remotos y buscarlos (usando --merge)
  • Definitivamente voy a jugar con esto más tarde. No se admiten archivos de logs gzipped, lo que personalmente reduce al mínimo mi caso de uso
    • Parece que lo pensó bastante bien al mencionarlo como una limitación que la gente notaría. Me pregunto si planea darle soporte eventualmente
  • Se ve bien. Si quiere más usuarios, podría recibir ayuda de la comunidad para empaquetarlo en las principales distribuciones de Linux
  • Muy bueno. Lo agregué a mi pequeña lista de visores de logs https://github.com/dloss/klp#alternative-tools
  • Bien. Lo necesitaba hace unos años. ¿No hay archivo de licencia?
  • Se ve bien. Me pregunto si hay alguna forma de usar fechas/horas en formato RFC 3339 sin cambiar el código fuente
    • Me pregunto si funciona con runit (Void Linux)
  • Excelente. Estaba buscando algo así
  • Me pregunto si puede ver logs en AWS CloudWatch