Qual é a melhor maneira de lidar com a multiplicidade de logs diferentes criados em todo o lugar?

1

Eu corro alguns aplicativos que criam seus próprios logs. Em seguida, executo scripts cron no mesmo servidor para importar dados para meu aplicativo. Quando estes erros cron, o padrão é que envia e-mails para o usuário que executa o cron job.

Existem muitos lugares que eu preciso verificar os logs e e-mails para coisas que podem ter dado errado. A minha pergunta é, qual é a melhor maneira de fazer isso ou até melhor é como um aplicativo analisador de log que passará por todos os logs do sistema quando algo realmente der errado, em vez de eu ter que passar por ele diariamente?

    
por Low Kian Seong 10.01.2011 / 09:44

4 respostas

3

O Logwatch é uma boa solução, mas você ainda está lidando com muitos e-mails. Eu prefiro alimentar tudo no syslog e depois coletar esses syslogs em uma máquina central de log. Você pode fazer vários tipos de processamento e correlação de eventos nos logs em um só lugar.

Primeiro, como obter seus logs de aplicativo no syslog? Existem algumas maneiras. Para o caso mais simples, você pode chamar logger em scripts shell para criar mensagens syslog. Se você estiver executando scripts perl, você pode adaptá-los para usar Log4Perl para redirecionar os logs para o syslog. Existem abordagens semelhantes disponíveis para outros idiomas.

Você deve considerar a substituição do sylog do sistema de ações por algo como syslog-ng para melhorar o desempenho e a capacidade de filtrar logs conforme eles se movem pelo pipeline. O syslog-ng também suporta o bloqueio de canais para que você possa redirecionar a saída de um programa existente diretamente para o syslog-ng sem modificar o programa e sem perder dados.

Depois de obter seus registros em um só lugar, você pode configurar ferramentas como Correlacionador simples de eventos para encontrar padrões. Você também pode executar ferramentas como logstash para salvar registros em um banco de dados e permitir consultas e gráficos mais poderosos.

É claro que existem ferramentas comerciais para fazer esse tipo de coisa também. Um dos mais populares é o Splunk , que é gratuito para experimentar e para quantidades limitadas de dados. O Splunk vem com um cliente que você pode executar em vários servidores para economizar o passo de colocar todos os seus logs em um servidor syslog central. Se você tem mais dinheiro que os desenvolvedores, vale a pena considerar algo como o Splunk.

Por fim, aqui está um mini-howto de registro central que cobre muito do mesmo campo que acabei de fazer.

    
por 10.01.2011 / 10:17
1

Na minha opinião, logwatch é o melhor. Ele vem por padrão com muitas distros, e, embora seja um porco pegar o jeito da sintaxe de configuração, uma vez que o trabalho é colocado, torna-se muito mais um trabalho de sentar e voltar. Ele funciona em modo batch, rodando de vez em quando para digerir arquivos de log recentes e ordenar e resumir as entradas.

Se você não quer trabalhar tanto, a amostra é menos difícil de usar por muito menos dinheiro. Ele também é executado de forma interativa, comendo cada nova linha de um arquivo de log como aparece e alertando você conforme solicitado, se ele corresponder a determinadas condições.

Seja qual for a abordagem que você tomar, eu pessoalmente recomendo contra uma abordagem "classificar através dos arquivos de log quando as coisas dão errado", em favor de "classificar os arquivos de log o tempo todo, para que eu possa pegar o jeito do meu sistema".

Em primeiro lugar, os logs da falha observada podem não ser os logs da raiz da falha. Seu servidor da web pode gritar que os dados do arquivo de cache do cookie estão no formato errado (falha de declaração!) Até ficarem azuis, mas se você não estiver olhando para o log do sistema que diz /cache está 100% cheio e inferir daí que nenhum dado de cookie pode ser gravado no cache, você não saberá realmente o que deu errado, a título de exemplo.

Em segundo lugar, na minha opinião, não é razoável esperar que um aplicativo saiba que tipo de registros seu sistema produz, seja em operação normal ou patológica. Conhecer os meandros do seu sistema é o seu trabalho como administrador de sistema; a maioria dos administradores irá um passo além e automatizará a exclusão de todos os comportamentos normais e a notificação de todos os patológicos, usando ferramentas regulares (como as acima) customizadas para seu sistema, ou escrevendo as próprias.

    
por 10.01.2011 / 09:48
0

Outra solução, se você tiver os recursos, é SPLUNK. Você cria um servidor SPLUNK em sua rede, envia todos os logs de todos os seus servidores e todos os seus aplicativos para ele. Ele indexa os logs e os sincroniza em uma linha do tempo.

É um conceito incrível e pode realmente ajudar com problemas de depuração. É gratuito para até 500MB por dia de registros:

link

Andrew

    
por 10.01.2011 / 11:11
0

Você também pode dar uma olhada no Octopussy (disclaimer: my project), bastante difícil no começo, mas realmente poderoso, enfim.

    
por 10.01.2011 / 11:26

Tags