Repicar log do apache com syslog

Você pode estar se perguntando: "Pra quê vou dobrar o espaço que o log ocupa?"

Se este foi seu primeiro pensamento, é porque vc, ainda bem, nunca precisou!! Os dois casos mais comuns são:
  1. A maquina foi comprometida e o atacante apagou todo o lastro para não ser pego;
  2. Há no ambiente um servidor central que gera estatistas, de todo ambiente em tempo real.

A minha necessidade foi o segundo caso =D.

Para o primeiro caso, ataque e comprometimento do host, a configuração do apache é bem simples. Com a própria diretiva ErrorLog, pode-se direcionar o fluxo do log para o syslog.
Exemplo:
ErrorLog syslog; ou
ErrorLog syslog:local1


Para o segundo caso, redirecionamento do log de acessos, pesquisei e encontrei diversas maneiras, scripts perl, shellscrits, utilizando rsync, ou mesmo o scp (o que eu usava antes).

No meu modo de trabalho anterior, eu configurava o postrotate do logrotate, para enviar o arquivo para máquina remota.

Agora de maneira simples, adiciono esta diretiva ao apache:
CustomLog "|/usr/bin/logger -t apache -i -p local1.notice" combined


Relembrando, o apache/httpd suporta múltiplas diretivas de log, podendo direcionar o mesmo log para vários destinos ao mesmo tempo.
exemplo:
ErrorLog /var/log/apache2/error.log
ErrorLog syslog:local1
CustomLog /var/log/apache2/access.log combined
CustomLog "|/usr/bin/logger -t apache -i -p local1.notice" combined



Configuração no syslog onde o apache está rodando:
Esta parte depende da distribuição em que o serviço está funcionando. Em geral não há muitas mudanças para os forks do syslog (syslog, rsyslog, syslog-ng); no rsyslog o arquivo é /etc/rsyslog.d/50-default.conf.

local1.* -/tmp/apache.log #persiste local
local1.* @192.168.1.1 # persiste remoto


Configuração no syslog que receberá os logs do apache:
Esta parte é configurado o servidor syslog, o qual receberá os logs.

rsyslog: /etc/default/rsyslog
de: RSYSLOGD_OPTIONS="-c4"
para: RSYSLOGD_OPTIONS="-r -c4"


syslog: /etc/sysconfig/syslog
de:SYSLOGD_OPTIONS="-m 0"
para:SYSLOGD_OPTIONS="-r -m 0"






Referencias:
http://oreilly.com/pub/a/sysadmin/2006/10/12/httpd-syslog.html
http://blog.terryburton.co.uk/2007/11/apache-accesslog-to-syslog.html
http://httpd.apache.org/docs/1.3/mod/core.html

Comentários