Crazy Logs

De manhã, sem tomar um gole de café, você abre a correspondência e vê um relatório de bug sobre o que estava funcionando bem, não falhou e nem se incomodou. Não há ideias em movimento, não há suspeitos, também não houve grandes alterações no código - você precisa acessar os logs.

E você não foi lá há tanto tempo que distribuiu um arquivo com logs de até 100 mb. ou até 500 mb. Heck! Ou talvez até 10 GB (*). E evidências preciosas estão em algum lugar entre 10.737.418.240 bytes, que precisam ser executadas com urgência para descobrir o que está acontecendo, mesmo quando o café já está esfriando.

Ou talvez um arquivo com duzentos arquivos (digamos 5 MB cada) de logs quebrados foi para o relatório com um trailer e você precisa colá-los de alguma forma e depois olhar, cavar e pensar.

Isso é familiar?

Em geral, todos nós, de uma forma ou de outra, somos confrontados com a necessidade de analisar os "traços de vida" de nossas criações, e é bom que o arquivo tenha alguns MB, porque abrir um log de 1 GB com um bloco de notas e até tentar fazer uma pesquisa é uma tarefa duvidosa.

Abaixo, mostrarei uma ferramenta que não tem limites (**) no tamanho dos arquivos abertos, mas tem uma pesquisa muito rápida.

E eu convido você a participar do desenvolvimento.

E sim, haverá muitas fotos interessantes.

Portanto, parece uma tarefa trivial abrir os logs e pesquisar, às vezes pode ter um tamanho de arquivo banal. Você pode abrir um pouco com qualquer coisa, pelo menos com o mesmo bloco de notas ou bloco de notas ++, mas em papoulas e Linux, às vezes é mais fácil colocar tudo no console com um gato e fazer uma pesquisa.

Entre outras coisas, você pode usar o mencionado bloco de notas ++, atom, logExpert, sublime, bare vim, bbedit, glogg etc. Devo dizer imediatamente que nem todos abrirão o gigabyte 2, e alguns dos infelizmente sobreviventes serão quebrados na pesquisa. E, acima de tudo, talvez apenas o átomo seja verdadeiramente multiplataforma, e eu quero ter uma coisa quando precisar trabalhar em várias plataformas em paralelo. E quantos consomem RAM para processar pelo menos algumas centenas de megabytes de logs é uma história diferente.

É por isso que temos a ferramenta chipmunk, que foi serrada em tarefas limitadas, mas rapidamente se transformou em uma solução abrangente para análise de logs. O esquilo não pode fazer mais nada; suas tarefas são reduzidas a uma simples:

  • abra logs sem se preocupar com o tamanho do arquivo;
  • pesquise para não esperar, mas veja o resultado imediatamente;
  • lembre-se de todas as suas pesquisas e armazene-as cuidadosamente sob demanda;
  • ajudá-lo a perceber visualmente as informações;
  • comportar-se modestamente em relação à RAM;
  • para resolver outras tarefas mais restritas, mas sempre reduzidas à análise de logs.

Bem, vamos falar sobre tudo em ordem.

Recursos


O Chipmunk não carrega nada na RAM, exceto o pedaço de logs que é visível na tela (bem, um pouco mais de buffer, mas isso é um pouco). Andando pelo arquivo, o esquilo lê um pedaço do arquivo (correspondente à posição da rolagem) e o carrega apenas na memória. Graças a isso, o apetite por RAM é bastante inteligível e não varia, e a primeira “tela” com o conteúdo do arquivo é mostrada imediatamente (embora a indexação continue com o segundo plano).

Conveniência e visualização


imagem

Há um gerenciador de consultas de pesquisa onde você pode:

  • Atribuir cores aos filtros (o que facilita a percepção dos dados)
  • salve a coleção de filtros em um arquivo para que você tenha sempre um padrão de pesquisa pronto à mão.

Você pode, por exemplo, procurar no arquivo a frequência das correspondências (quanto maior a coluna, mais correspondências no fragmento do arquivo).

imagem

Ou você pode especificar um grupo em uma expressão regular e obter um gráfico bonito (no exemplo usado, a expressão uso da CPU: \ s + (\ d + \. \ D +) ). E agora você vê onde o consumo da CPU foi anormal e qual parte dos logs deve ser examinada com cuidado.

imagem

Além de pesquisar por si só, linhas individuais de logs podem ser marcadas, que sempre serão apresentadas na janela de resultados da pesquisa. Isso é muito conveniente quando vi algo importante em alguns milhões de linhas e você não quer perder de vista.

Combinação de arquivos


Para resolver problemas associados a vários arquivos, o chipmunk pode ocultar arquivos em um (por exemplo, até a data da última alteração no arquivo). Tudo o que é necessário:

  • jogue um grupo de arquivos na janela do esquilo
  • se você precisar classificar arquivos como quiser
  • além disso, você pode pesquisar todos os arquivos e, por exemplo, excluir os arquivos que não possuem correspondências para a palavra "erro" (bem, por que devemos ir aonde tudo é tão calmo?)

imagem

Como resultado, obtemos na janela uma sequência de todos os arquivos selecionados.

Se você precisar de um mecanismo mais complexo para combinar logs (por exemplo, se você tiver logs de diferentes dispositivos / fontes), poderá usar a função de mesclagem, que determina o formato do registro de data e hora para cada arquivo e exibe os logs em ordem cronológica.

imagem

Preste atenção às etiquetas coloridas à esquerda da saída - essas são etiquetas de arquivo. Ou seja, você não vê a saída de um arquivo após o outro (concatenação), mas a saída classificada por hora em todos os arquivos (mesclando).

Características especiais


Se você já encontrou o DLT, sabe como é difícil usar o DLTViewer. A boa notícia é que o esquilo é uma alternativa para abrir e analisar arquivos DLT. Além disso, ele também suporta streaming DLT.

imagem

Ao abrir o arquivo DLT, você verá imediatamente um resumo do arquivo, incluindo uma lista de todos os componentes, o que é conveniente se você estiver interessado em um APID específico e não no log inteiro.

Falando de tópicos


Pronto para uso com o chipmunk, vem um plug-in simples “Comandos”, que permitirá executar qualquer comando do console e receber saída no chipmunk com a capacidade de procurar essa saída. Naturalmente, se você tiver uma pesquisa ativa (por exemplo, um filtro salvo), os dados do resultado serão atualizados à medida que o fluxo for atualizado a partir do comando do console.

imagem

Oh sim plugins


Existem alguns deles até agora. É isso mesmo, realmente não é suficiente. Existem apenas cinco públicos (aqueles que são de domínio público e acessíveis ao gerenciador de plugins), não públicos, eu nem sei, talvez uma dúzia.

Escrever seu plugin é muito simples (farei uma reserva para uma tarefa simples).

Por exemplo, se seus logs contiverem mensagens apresentadas na forma de bytes, e você desejar vê-las imediatamente em uma forma legível (ou seja, decodificada); é fácil cortar um plug-in, que receberá o fragmento de log selecionado como entrada e lançará a saída decodificada no painel. Ou talvez até decodificar em tempo real e exibir um texto inteligível na tela, e não A5 FF 13 EE ... etc.

Em geral, existem dois tipos de extensões: o primeiro trabalho com a renderização, ou seja, eles permitem alterar a apresentação da saída: se você deseja colunas, por favor; Eu quero decodificar algo rapidamente - você pode; existe um desejo de colar gráficos (por exemplo, ícones) - não está claro por que você precisa, mas pode.

Outro tipo de plugins (e é mais interessante), aqueles que podem fornecer dados (criar fluxos). Por exemplo, deseja ver a saída da porta serial? Não é um problema: o caso é um novo projeto npm, nós incluímos nossa porta de porta favorita, adicionamos uma pequena interface ao seu gosto e agora seu plug-in pode lançar dados no esquilo.

Por conveniência e primeiras datas, como é habitual em famílias decentes, existe um repositório de início rápido com dois exemplos.

Se estiver interessado, informe-me nos comentários - farei um pós-guia separado para criar e publicar plug-ins (a propósito, não é necessário registro para publicação).

Em vez de uma conclusão


Provavelmente é tudo. Não quero criar um livreto de publicidade ou um cartão de usuário a partir desta postagem. Portanto, com um mínimo de letras, tão brevemente. Meu objetivo é compartilhar com você outra ferramenta para trabalhar com logs, que pode ser útil para resolver muitos problemas.

O projeto é totalmente de código aberto e aberto à sua participação, qualquer que seja a sua participação. Deseja ver suporte para algo assim? Crie um problema e selecione "Solicitação de recurso". Encontrou um bug? Teremos o maior prazer em receber um relatório de erro com uma breve (mas suficiente) descrição do problema. O inglês é bem-vindo, mas o russo não é proibido.

E, claro, colocando a estrela estimada no github, em apenas alguns segundos, você sentirá uma ligeira melhora no calor e no humor de nossa gratidão pela aprovação do que estamos fazendo. Para você, clique - para nós, feedback e inspiração.

Obrigado.

Lançamentos


Esclarecimento
(*) , (1 <). , . . 10-20 , . embedded .

(**), , . chipmunk . , chipmunk RAM, , SSD.

All Articles