Fazendo o Apache gravar os logs no MySQL.
Enviado por Luis Fernando Kieça (luis_fkΘyahoo·com):
“Publiquei em meu blog pessoal como fazer o Apache logar as páginas no MySQL. “Uma coisa bem bacana de se fazer, é colocar os logs do Apache em um banco de dados, principalmente se você quiser montar uma ferramenta para análise da maneira que precisa. Não é complicado de ser feito, como veremos no decorrer deste artigo.”” [referência: luisfk.blogspot.com]
• Publicado por Augusto Campos em
2010-02-17
Ai o cara quer matar o desempenho do Apache…
É, acho que se eu quisesse analisar os dados de acesso do Apache e precisasse que eles estivessem em um banco de dados pra isso, eu faria a transferência em batch, via um script externo associado ao logrotate, rodando em horário de baixa demanda (caso esse luxo seja possível – para mim é).
Pra gravar o log diretamente no servidor de banco de dados, creio que é necessário ter muito recurso sobrando, ou uma infra-estrutura especialmente favorável.
E inventou-se o auto-DOS. Sério, isso é mais eficiente que instalar o Windows ME, para matar seu servidor.
Achei a idéia interessante, só que eu faria assim, exportaria o log para um banco de dados com um agendamento em horário de menor tráfego, e “zeraria” o log original após um backup. Acho que num server com muitas requisições o modelo proposto comprometeria o desempenho do server severamente
Pessoal,
Eu sei que vocês podem achar que a idéia de logar os acessos num banco de dados irá matar a performance do Apache. Concordo em gênero, número e grau.
Mas uma das possibilidades com este recurso sendo logado diretamente no banco de dados, é a administração dos logs facilitada, principalmente para quem trabalha com clusters de servidores e/ou banco de dados (geralmente ISP’s).
Digo administração facilitada, pelo fato de você não precisar concatenar todos os logs de todos os seus N servidores web para somente depois poder processar o arquivo. Neste caso, o ganho de tempo processando logs pode cair considerávelmente.
Já no que diz respeito à performance, a própria documentanção efetuou testes utilizando uma ferramenta do Apache (Apache Bench – http://httpd.apache.org/docs/2.0/programs/ab.html) para reportar os tempos, conforme vemos neste endereço da documentação: http://www.outoforder.cc/projects/apache/mod_log_sql/docs/node5.html#SECTION00053100000000000000
Conforme podemos ver no link acima, 139 hits por segundo equivalem a mais de 12 milhões de hits por dia para a máquina utilizada nos testes. Acredito que seja um número bem expressivo.
Aqui no servico usamos o syslogd, um servidor de log pra quem nao sabe.
Logamos varias “coisas” nele (cluster tomcat, webSphere,log4j, script bash ).
Depois filtramos com grep por data/ip/palavra-chave.
Tem funcionado bem, de uso mais generico,mais facil de usar que DB , imho.
Ex:
cat /var/log/local0 /var/log/local0.1 | grep “erro”
Espero que ajude.
Marcolinux