Logs en Apache
|
|
Por SegFault
departamento administrando nuestras visitas , Sección Diarios Puesto a las Tue Mar 16th, 2004 at 05:32:22 PM CET
|
|
Aprovecharé para contar algunas cosas sobre los logs generados por Apache. En la mayoría de los casos en
lo que se use Apache utilizaremos host virtuales (por nombre de dominio si
andamos escasos de IP, que suele ser lo normal) así que lo primero es que
deberiamos utilizar es algún formato que almacene información sobre el
host visitado (como CLF con
Virtual Host por ejemplo) de esta forma podemos tener en un sólo
fichero toda información estadísticas y distinguir un sitio de otro (y podemos
rotarlo con alguna herramienta como cronolog para tenerlo más
manejable).
|
Puede ocurrir que querramos tener un fichero de log distinto para cada
virtual host (para que lo gestionen distintas personas por ejemplo), en ese caso
podemos recurrir al método anterior y regularmente (cron mediante) partirlo con
split-logfile
(incluido en Apache) antes de procesarlos, o bien generar un fichero de log
distinto para cada virtual host, pero si tenemos muchos hosts podemos
encontrarnos con el problema de utilizar demasiados
descriptores de fichero, en cuyo caso la mejor solución es utilizar
split-logfile como filtro del comando CustomLog
(Mandrake de serie en su advx-server incluye la línea CustomLog
"|/usr/sbin/advxsplitlogfile" vhost env=VLOG para filtrar a través
de advxsplitlogfile de una forma parecida como se haría con split-logfile de
Apache).
Y ya que estoy también hablaré sobre una configuración que yo uso para los
logs que está basada en el artículo sobre logging
condicional para loggear los proxy cache. El problema de la
configuración que se usa es que se confía en que las cabeceras HTTP que
identifican la IP original son correctas, y en caso de algún tipo de ataque o
troll es posible que sean falsificadas (no es difícil, creedme) con lo que al
final los datos almacenados en el log no nos sirven. Por eso en mi
configuración, cuando aparece la cabecera que identifica al proxy además de
guardar la dirección que dice ser la original también guardo la dirección IP de
la conexión en un campo adicional (la mayoría de analizadores de logs no tienen
problema porque haya campos adicionales). Os pongo las líneas y el colocarlas en
los sitios adecuados los dejo como ejercicio para el lector :-)
LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
vhost
# Definimos un formato de log especial para peticiones desde proxy
LogFormat "%v %{Client-IP}i %l %u %t \"%r\" %>s %b \"%{Referer}i\"
\"%{User-Agent}i\" ClientIP=%h" vhost_proxy
# Sólo las peticiones de un proxy contendrán una dirección IP en Client-IP
SetEnvIfNoCase Client-IP "\." proxy
CustomLog /var/log/httpd/access.log vhost env=!proxy
# En las peticiones desde los proxy, usamos el formato alternativo
CustomLog /var/log/httpd/access.log vhost_proxy env=proxy
|
|
|