análise do log central do apache de muitos hosts [closed]

2

Temos mais de 30 servidores httpd apache e estamos procurando realizar análises nos logs tanto para tendências históricas quanto para monitoramento / alerta quase "em tempo real". Estou interessado principalmente em coisas como taxas de erro (4xx / 5xx), tempo de resposta, taxa geral de pedidos, etc., mas também seria muito útil extrair mais estatísticas intensivas de computação, como IPs de cliente exclusivo e agentes de usuário por unidade de Tempo.

Estou inclinado a construir isso como um coletor / servidor / armazenamento centralizado, e também estou considerando a possibilidade de armazenar logs não-apache (ou seja, syslog geral, logs de firewall, etc.) no mesmo sistema.

Obviamente, uma grande parte disso provavelmente terá que ser personalizada (pelo menos a conexão entre as partes e a análise / análise que fazemos), mas eu não consegui encontrar muita informação sobre pessoas que fizeram coisas como essa , pelo menos em lojas menores que o Google / Facebook / etc. que podem lançar seus dados de log em um cluster de computação de cem nós e executar o Map / Reduce nele.

As principais coisas que estou procurando são:

  • Todo o código-fonte aberto
  • Uma maneira de coletar logs de máquinas do Apache que não consomem muito os recursos e os transporta com relativa rapidez pela rede
  • Alguma maneira de armazená-los (NoSQL? key-value store?) no backend, por um determinado período de tempo (e, em seguida, enrolá-los em médias históricas)
  • No meio disso, uma maneira de representar graficamente em tempo quase real (provavelmente também com alguma análise estatística sobre ele) e esperançosamente alertar sobre esses gráficos.

Todas as sugestões / sugestões / ideias, para "produtos" / projetos ou descrições de como outras pessoas fazem isso seriam muito úteis. Infelizmente, não somos exatamente uma loja de devotos da nova era, muitas coisas antigas, infraestrutura homogênea e caixas esticadas.

    
por Jason Antman 08.06.2012 / 17:22

5 respostas

2

O rsyslog pode funcionar muito bem, e se a quantidade de dados que você está tentando registrar for pequena o suficiente, você pode até usar a versão gratuita do Splunk . A versão completa é provavelmente uma solução mais abrangente que talvez esteja de acordo com o que você deseja realizar, poupando o tempo de desenvolver suas próprias ferramentas internas de monitoramento.

No meu trabalho, porém, apenas nos atemos ao syslogd, Nagios e Ganglia para todas as nossas necessidades de monitoramento, já que mesmo com as 600 ou mais máquinas, elas são incrivelmente estáveis.

    
por 08.06.2012 / 17:45
2

Jason, você mencionou interesse em usar o Ganglia para monitorar seus servidores da web Apache. Você já pensou em usar o mod-sflow com o Ganglia?

Usando o Ganglia para monitorar farms da web

mod-sflow

Recentemente, métricas de trabalhador ativas, ociosas e máximas foram adicionadas. Embora o Ganglia seja ótimo para as métricas de tendência do cluster, você precisará usar um analisador de logs para relatar os dados detalhados do registro. O mod-sflow envia dados de contador e registro como estruturas codificadas XDR binárias em UDP. Você pode usar o sflowtool para converter os dados binários em logs ASCII padrão ou como a base de sua própria ferramenta de análise.

    
por 10.10.2012 / 03:57
1

Se você deseja configurar um servidor syslog de propósito geral, eu definitivamente recomendo que você dê uma olhada no rsyslog, é uma implementação de syslog moderna muito poderosa. Uma das coisas que eu gosto sobre isso é que ele pode se conectar a um banco de dados relacional em vez de arquivos simples, o que torna a compactação de dados muito mais fácil.

Eu nunca usei o syslog com o Apache, então não posso ajudar com essa parte da sua pergunta, infelizmente.

    
por 08.06.2012 / 17:37
0

Você pode experimentar o LogZilla . É 99% de código aberto (um arquivo não é). É extremamente rápido e barato comparado às outras soluções desta classe.

    
por 09.06.2012 / 00:57
0

Esta não é uma solução tão geral quanto você pediu, mas pensando em uma sessão da conferência PHP de Londres, a BBC disse que eles tinham uma maneira inteligente de transportar arquivos de log do apache de muitos servidores para um servidor central em tempo real. tempo, eu acho que eles apelidaram teleportado.

Não me lembro os detalhes exatos, mas o jist era que eles tinham um pequeno script de reinicialização automática em execução em cada um dos servidores apache que basicamente abriam um pipe chamado fifo / var / log / apache2 / access_log e usado netcat para copiá-lo para uma porta tcp exclusiva nos servidores de log. Os servidores de log, em seguida, enviaram de volta para o / var / log / myApacheServer / access_log.

Com cuidado, essa abordagem também funcionaria para arquivos syslog gerais, embora uma sincronização inicial durante a inicialização do sistema possa ser necessária.

Se você estiver bem com tempo semi-real, então eu escolheria uma solução muito mais simples de girar os arquivos de log a cada n minutos e rsyncing-los para o servidor central em [postrotate].

Muitos pacotes webstats, como awstats e friends, assumem que os arquivos de log são classificados, então algo como logresolvemerge.pl do awstats pode ser um pré-processador útil no logServer: / var / log / * / access_log antes de executar qualquer stats exigir dos resultados.

O Cacti desenharia os gráficos que você procura usando o rrdtool, mas você precisaria alimentá-lo a partir de dados coletados dos arquivos de dados internos da webstats, o que é um pouco desestruturado para o meu gosto.

Essa abordagem é programável, mas começa a ficar entediante com um grande número de hosts virtuais, já que você acaba com um número vhosts * serverCount de fluxos TCP.

É tudo baseado em sistemas de arquivos, então um pouco de baixa tecnologia no mundo de hoje, desculpe.

    
por 09.06.2012 / 18:52