Transporte e agregação de logs em escala

14

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.

markdrayton
fonte

Respostas:

5

Eu usei três sistemas diferentes para centralizar logs:

  1. Encaminhamento de syslog / syslog-ng para um host
  2. Zenoss para agregar e alertar eventos
  3. Splunk para agregação e pesquisa de logs

Para o # 3, normalmente uso o syslog-ng para encaminhar as mensagens de cada host diretamente para o splunk. Ele também pode analisar arquivos de log diretamente, mas isso pode ser um pouco trabalhoso.

O Splunk é incrível para pesquisar e categorizar seus logs. Não usei splunk para alertar logs, mas acho que é possível.

Gary Richardson
fonte
+1 para Splunk. Você pode fazer com que o Splunk ative scripts externos quando determinados eventos forem detectados; enviando um email ou uma interceptação SNMP.
Murali Suriar #
2

Você pode dar uma olhada no OSSEC, um HIDS de código aberto completo, faz análise de log e pode acionar ações ou enviar e-mails com alertas. Os alertas são acionados por um conjunto de regras simples baseadas em XML, muitas predefinidas para vários formatos de log estão incluídas e você pode adicionar suas próprias regras

http://www.ossec.net/

Guillaume
fonte
1

Dê uma olhada no Octopussy . É totalmente personalizável e parece atender a todas as suas necessidades ...

PS: Eu sou o desenvolvedor desta solução.

sebthebert
fonte
1
Eu não gostaria de arriscar implantar ou mesmo recomendar um produto que tenha "buceta" no nome. Isso provavelmente não seria bom para a maioria das empresas, principalmente se houver mulheres trabalhando na área de TI (bastante comum atualmente).
Starfish
0

Você precisa procurar em um sistema de monitoramento, por exemplo, Zenoss Core . Entre outras coisas, diz na página de introdução:

O Zenoss Event Monitoring and Management fornece a capacidade de agregar informações de log e eventos de várias fontes, incluindo monitoramento de disponibilidade, monitoramento de desempenho, fontes syslog , fontes de interceptação SNMP, log de eventos do Windows.

Veja o que ferramenta você usa para monitorar seus servidores .

gimel
fonte
Eu não sabia que o Zenoss tinha recursos de agregação de log. Vou dar uma olhada - obrigado.
Markdrayton #