NerdLog - visualizador TUI rápido de logs multi-host com histograma de linha do tempo
(github.com/dimonomid)- Coleta e análise de logs remotos apenas com conexões SSH, sem servidor central, em um visualizador TUI de logs multi-host rápido e eficiente em recursos
- Visualização com histograma de linha do tempo e filtragem por tempo facilita entender o fluxo dos logs
- Usa combinações básicas de
awk,taileheadpara oferecer alto desempenho e implantação simples - As consultas de log são processadas remotamente sem download local, minimizando o uso de rede e otimizando o tratamento de grandes volumes de logs
- O padrão é simples, mas há extensibilidade por meio de vários arquivos de configuração, SSH config e interação pela UI
Introdução ao Nerdlog
- Nerdlog é um visualizador de logs com interface de texto que funciona sem servidor central
- Ele permite analisar logs como o Graylog/Kibana, mas é uma ferramenta alternativa leve, sem a carga de instalação e manutenção
- A motivação inicial do desenvolvimento começou com a frustração em relação ao Splunk, que era lento e ineficiente
- É otimizado para filtrar e visualizar simultaneamente logs de vários servidores remotos
- Foi projetado principalmente para processar logs de sistema (
/var/log/messages,/var/log/syslog), mas também suporta outros formatos - Consegue processar rapidamente logs grandes, de mais de 1 GB
- O objetivo principal é maximizar a velocidade e a eficiência na consulta de logs em múltiplos nós
Características de design
- Funciona sem servidor central, criando uma conexão SSH para cada nó e mantendo-a em espera
- Sem baixar o log inteiro, envia por consulta no máximo 250 mensagens de log e apenas os dados do histograma
- Mescla todas as respostas para oferecer uma visão unificada
- Usa compressão Gzip na transmissão para reduzir o custo de rede
Estado e histórico do projeto
- Foi criado em 2022 em um hackathon pessoal como substituto do Splunk lento e, em 2025, foi lançado como open source
- Foi implementado rapidamente, então há código espaguete e falta cobertura de testes
- O uso real foi testado apenas em ambiente Linux
- Está em fase de prova de conceito, mas já é rápido e estável o suficiente para uso prático
Resumo de uso
- Ao executar o app, aparece um campo para inserção da consulta
- Um logstream representa arquivos de log contínuos em servidores acessíveis via ssh
- É possível especificar porta SSH ou caminho do arquivo de log, ou usar ssh config e arquivos de configuração separados
- Select field expression permite definir em estilo SQL os campos que serão exibidos na UI
Exemplo:
myuser@myserver.com
myuser@myserver.com:1234:/some/other/logfile
Exemplo de arquivo de configuração (~/.config/nerdlog/logstreams.yaml):
log_streams:
myhost-01:
hostname: actualhost1.com
port: 1234
user: myuser
log_files:
- /some/custom/logfile
Estrutura da UI
- Filtro de entrada de padrão Awk: suporta
/foo/,( /bar/ || /baz/ ) && !/qux/etc. - Botão Edit: abre a janela de entrada da consulta completa
- Botão Menu: oferece funções como voltar, avançar e copiar consulta
- Histograma: visualiza a densidade de logs por faixa de tempo e permite selecionar o intervalo de tempo
- Tabela de logs: os logs mais recentes ficam na parte inferior, e é possível ver campos detalhados com rolagem horizontal à direita
- Barra de status:
- Verde: número de logstreams conectados e em espera
- Laranja: número de logstreams sendo consultados no momento
- Vermelho: número de logstreams em processo de conexão
- Números à direita: total de logs correspondentes / número de logs atualmente carregados / posição do cursor
- Linha de comando: acessada com a tecla
:, permitindo inserir comandos no estilo Vim
Como navegar
- Teclas gerais:
Tab,Shift+Tab,Enter,Esc,PgUp,PgDnetc. - Teclas no estilo Vim:
h,j,k,l,g,G,Ctrl+U,Ctrl+D,i,aetc. - Dentro dos campos de entrada, use
Up,Down,Ctrl+P,Ctrl+Npara navegar pelo histórico Ctrl+K,Ctrl+J: percorrem todo o histórico de consultas
Principais comandos
:xcou:xclip: copia o estado atual da consulta para a área de transferência como string de comandonerdlog --lstreams 'localhost' --time -3h --pattern '/something/':back,:fwd: move para a consulta anterior/seguinte como em um navegador:edit: abre a janela de edição da consulta:write [filename]: salva os logs atualmente carregados em um arquivo:reconnect,:disconnect: reconecta / desconecta logstreams:set opção=valor: altera configurações (suportanumlines,timezoneetc.):q: encerra o programa
Requisitos
- É necessário ter acesso SSH aos hosts remotos
- O SSH agent deve estar em execução localmente
- Os hosts precisam ter gawk instalado, e mawk não é suportado
- Serviços de registro de logs do sistema, como
rsyslog, devem estar em execução para que/var/log/syslogpossa ser usado - Para mais detalhes, consulte Requisitos e limitações
Encerrando
- Nerdlog é uma ferramenta eficiente para visualizar logs remotos de forma rápida e visual, sem necessidade de instalação
- Não exige configurações complexas e permite análise em tempo real economizando recursos de rede
- É uma ferramenta de análise de logs especialmente ideal para usuários de Vim ou para quem prefere ferramentas de CLI
1 comentários
Comentários no Hacker News
--merge)