Ferramentas para despejar entradas de conjuntos arbitrários de arquivos de log entre 2 datas

1

Eu tive um incidente de interrupção há alguns dias e a equipe de suporte solicitou todos os registros disponíveis para o período. Pensando em como fazer isso, ocorreu-me que seria útil geralmente analisar muitos arquivos de log de uma vez para entradas entre 2 datas.

Eu vejo muitas ferramentas que tornam isso possível, se tivéssemos a perspicácia de configurá-las, não menos importante: splunk , syslog-ng , rsyslog , e outros que armazenam logs em algum backend pesquisável, como o mysql.

(Estou planejando instalar um host de log central para atender a esse requisito)

No entanto, para o curto prazo, estou interessado em uma ferramenta que chame a pasta /var/log/* e despeje para stdout, de preferência com uma sintaxe de opções simples (as opções de localização são agradáveis + mtime etc) e escritas em algo que possa fazer tão rápido (então provavelmente C ao invés de perl ou rubi)

Eu vejo um monte de ferramentas que estou procurando, que podem ou não ser adequadas para o propósito, como    mergelog , logpp , sec , mas nenhum realmente está saltando como obviamente bom para isso, o que é estranho porque eu esperaria que isso fosse o tipo de coisa que é feita até a morte em ferramentas unix.

    
por Tom H 24.02.2012 / 14:43

1 resposta

2

  1. Uso:

    find ... -mtime [fromdate] -a -not -ctime [todate]
    

    para localizar todos os arquivos modificados após [fromdate] e criados antes de [todate]

  2. Para arquivos encontrados, invente um padrão criativo para extrair linhas de interesse. Use egrep / awk , pois eles são muito mais rápidos que perl / python. Exemplo:

    awk '/^2012-01-(01|02|03)/'
    

    imprime todas as linhas para primeiro, segundo e terceiro de janeiro de 2012.

Acima são 2 minutos para escrever e executar. Se o desempenho for realmente um problema, prossiga e tente encontrar algo mais complicado.

    
por 24.02.2012 / 15:20