Como você está analisando arquivos de log de máquinas UNIX / Linux? Executamos centenas de servidores, todos gerando seus próprios arquivos de log, diretamente ou através do syslog. Estou procurando uma solução decente para agregá-los e selecionar eventos importantes. Esse problema se divide em três componentes:
1) Transporte de mensagens
A maneira clássica é usar o syslog para registrar mensagens em um host remoto. Isso funciona bem para aplicativos que efetuam login no syslog, mas menos útil para aplicativos que gravam em um arquivo local. As soluções para isso podem incluir o logon do aplicativo em um FIFO conectado a um programa para enviar a mensagem usando o syslog ou escrever algo que cumprimente os arquivos locais e envie a saída para o host central do syslog. No entanto, se tivermos o trabalho de escrever ferramentas para inserir mensagens no syslog, substituiríamos melhor o lote inteiro por algo como o Scribe do Facebook, que oferece mais flexibilidade e confiabilidade do que o syslog?
2) Agregação de mensagens
As entradas de log parecem se enquadrar em um dos dois tipos: por host e por serviço. As mensagens por host são aquelas que ocorrem em uma máquina; pense em falhas de disco ou logins suspeitos. As mensagens por serviço ocorrem na maioria ou em todos os hosts executando um serviço. Por exemplo, queremos saber quando o Apache encontra um erro SSI, mas não queremos o mesmo erro em 100 máquinas. Em todos os casos, queremos apenas ver um de cada tipo de mensagem: não queremos 10 mensagens dizendo que o mesmo disco falhou e não queremos uma mensagem sempre que um SSI quebrado for atingido.
Uma abordagem para resolver isso é agregar várias mensagens do mesmo tipo em uma em cada host, enviar as mensagens para um servidor central e, em seguida, agregar mensagens do mesmo tipo em um evento geral. O SER pode fazer isso, mas é difícil de usar. Mesmo depois de alguns dias de brincadeira, eu tinha apenas agregações rudimentares trabalhando e tive que procurar constantemente a lógica que o SER usa para correlacionar eventos. É algo poderoso, mas complicado: preciso de algo que meus colegas possam captar e usar no menor tempo possível. As regras do SER não atendem a esse requisito.
3) Gerando alertas
Como informamos nossos administradores quando algo interessante acontece? Enviar a caixa de entrada do grupo? Injetar no Nagios?
Então, como você está resolvendo esse problema? Não espero uma resposta em um prato; Eu mesmo posso resolver os detalhes, mas seria excelente uma discussão de alto nível sobre o que certamente é um problema comum. No momento, estamos usando uma mistura de tarefas cron, syslog e quem sabe mais o que encontrar eventos. Isso não é extensível, sustentável ou flexível e, como tal, perdemos muitas coisas que não devemos.
Atualizado: já estamos usando o Nagios para monitoramento, o que é ótimo para hosts / serviços de teste detectados / etc detectados, mas menos útil para rastrear arquivos de log. Eu sei que existem plugins de log para o Nagios, mas estou interessado em algo mais escalável e hierárquico do que alertas por host.