Diferencia entre revisiones de «Xestión de logs en Apache HTTP 2.4»

De MediaWiki
Ir a la navegación Ir a la búsqueda
 
Línea 181: Línea 181:
 
Para visualizar o informe no navegador accedemos a la seguiente URL:
 
Para visualizar o informe no navegador accedemos a la seguiente URL:
  
−
* http://www.paxina1.org/awstats/awstats.pl?config=www.paxina1.org
+
http://www.paxina1.org/awstats/awstats.pl?config=www.paxina1.org
  
 
= Referencias =
 
= Referencias =

Revisión actual del 09:14 16 nov 2020

Consideracións previas

Configuración de logs en Apache

Formato común de rexistro (Common Log Format)

Unha configuración típica do rexistro de acceso podería ter un aspecto similar a este:

LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common

Definese o apodo (nickname) common e se lle asocia cun determinado formato. O formato consiste nunha serie de directivas con tantos por cento, cada una das cales dille o servidor que rexistre unha determinada información en particular.

O formato pode incluir tamen caracteres literais que se copiarán directamente no rexistro. Se se usa o caracter comillas (") debe antepoñerselle una barra invertida (\) para evitar que sexa interpretado coma o final da cadea de caracteres a rexistrar.

O formato que especifique tamén pode conter os caracteres de control especiais "\n" para salto de liñaa e "\t" para tabulador.

A directiva CustomLog crea un novo ficheiro de rexistro usando o apodo definido. O nome do ficheiro de rexistro de acceso asúmese que é relativo o valor especificado en ServerRoot a no ser que comece por unha barra (/).

A configuración de arriba escribirá as entradas no registro co formato coñecido coma Formato Común de Rexistro (CLF). Este formato estándar podeno xenerar moitos servidores web diferentes e o poden ler moitos dos programas que analizan rexistros. As entradas dun ficheiro de rexistro que respetan ese formato común teñen unha aparariencia parecida es esta:

127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326

Cada unha das partes da entrada explicanse a continuación.

127.0.0.1 (%h)

É o enderezo IP do cliente (host remoto) que fixo chegar a petición ó servidor. Se a directiva HostnameLookups ten valor On, o servidor intentará determinar o nome do host e rexistrar ese nome en lugar do enderezo IP; mais non é moi recomendable o uso desta configuración porque pode ralentizar significativamente as operacións do servidor. É mellor usar un programa que realice esta tarea posteriormente sobre o rexistro, por ejemplo logresolve. Ós enderezos IP que se rexistren non son necesariamente os enderezos das máquinas dos usuarios finaos: se existe un servidor proxy entre o usuario final e o servidor, a dirección que se rexistra é a do proxy.

- (%l)

Un "guión" siginifica que a información que debería ir nese lugar non está disponible. Neste caso, esa información é a identidad RFC 1413 do cliente determinada por identd na máquina do cliente. Esta información é moi poco fiable e non debería ser usada nunca excepto con clientes que estén sometidos a controles moi estrictos en redes internas. Apache httpd non intenta recoller esa información agás que a directiva IdentityCheck teña valor On.

frank (%u)

Este é o identificador de usuario da persoa que solicita o documento determinado pola autentificación HTTP. Normalmente ese mesmo valor se pasa os scripts CGI coa variable de entorno REMOTE_USER. Se o código de estado da petición (ver abaixo) é 401, entonces non debe confiar na veracidade dese dato porque o usuario non foi ainda autentificado. Se o documento non está protexido por contrasinal, mostrará un guión "-" nesta entrada.

[10/Oct/2000:13:55:36 -0700] (%t)

A hora na que o servidor recibíu a petición neste formato: [día/mes/año:hora:minuto:segundo zona_horaria] day = 2*digit month = 3*letter year = 4*digit hour = 2*digit minute = 2*digit second = 2*digit zone = (`+' | `-') 4*digit

É posible mostrar a hora doutro xeito especificando %{format} no formato a usar no rexistro, onde format sustitué como se faría ó usar strftime(3) da librería estándar de C.

"GET /apache_pb.gif HTTP/1.0" (\"%r\")

A liña da petición do cliente amósase entre dobres comillas. A liña de petición contén moita información de utilidade.

Primero, o método usado polo cliente é GET. 
Segundo, o cliente fixo una petición ó recurso /apache_pb.gif
Terceiro, o cliente uso p protocolo HTTP/1.0. 

É posible tamen rexistrar unha ou máis partes da liña de petición independentemente.

Por exemplo:

O formato "%m %U%q %H" rexistrará o método, ruta, cadea de consulta e protocolo, tendo exactamente o mesmo resultado que "%r".
200 (%>s)

Es el código de estado que el servidor envía de vuelta al cliente. Esta información es muy valiosa, porque revela si la petición fue respondida con éxito por el servidor (los códigos que empiezan por 2), una redirección (los códigos que empiezan por 3), un error provocado por el cliente (los códigos que empiezan por 4), o un error en el servidor (los códigos que empiezan por 5). La lista completa de códigos de estado posibles puede consultarle en la especificación de HTTP (RFC2616 sección 10).

2326 (%b)

A última entrada indica o tamaño do obxeto retornado polo cliente, sen incluir as cabeceras de resposta. Se nom se respondeu con ningún contenido ó cliente, este valor mostrará o valor "-". Para rexistrar "0" en ese caso, use %B no seu lugar.

Formato de Rexistro Combinado (Combined Log Format)

Outro formato usado habitualmente é o chamado Formato de Registro Combinado. Este formato pode ser usado casí:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
CustomLog log/access_log combined

É igual que o Formato Común de Rexistro pero engade dous campos. Cada campo adicional usa a directiva %{header}i, donde header pode ser cualquier cabecera de petición HTTP.

O rexistro de acceso terá este aspecto:

127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"

Os campos adicionais son:

"http://www.example.com/start.html" (\"%{Referer}i\")
A cabecera de petición de HTTP "Referer" amosa o servidor do que provén o cliente. Esta debería ser a páxina que contén un enlace o que contiene a /apache_pb.gif).
"Mozilla/4.08 [en] (Win98; I ;Nav)" (\"%{User-agent}i\")
A cabecera de petición HTTP "User-Agent". É a información de identificación que o navegador do cliente inclue sobre si mesmo.

Rotación dos ficheros de rexistro

Incluso nun servidor cunha actividade moderada, a cantidade de información almacenada nos ficheros de rexistro é moi grande. O rexistro de acceso crece normalmente en 1MB por cada 10.000 peticiones; será necesario polo tanto rotar periódicamente os rexistros movendo ou borrando o seu contido. Esto non se pode facer co servidor funcionando, porque Apache continuará escribindo no antigo rexistro mentras que o ficheiro esté aberto. Por iso o servidor debe ser reiniciado despois de mover ou borrar os ficheros de rexistro para que se poidan abrir os novos ficheros de registro.

Se lle pode indicar ço servidor que abra novos ficheros de rexistro sen perder ninguna petición qoe esté sendo atendida ou en espera de algún cliente mediante usando un reinicio graceful; mais con isto o servidor continuará escribindo nos ficheros de registro antiguos mentres termina de servir esas peticións. É preciso polo tanto agardar algún teempo despois do reinicio antes de realizar ninguna operación sobre os antiguos ficheiros de rexistro.

Una situación típica que simplemente rota os rexistros e comprime os antigos para aforrar espacio é:

mv access_log access_log.old
mv error_log error_log.old
apachectl graceful
sleep 600
gzip access_log.old error_log.old

Outro xeito de realizar a rotación dos rexistros é usando ficheiros de rexistro redireccionados (piped logs).

Explotación e análise de logs con AWStats

AWStats é unha herramienta de sofware libre para analizar datos de acceso a un servidor web e xenerar informes HTML. Os datos son presentados visualmente en informes de táboa e gráficos de barra.

Pueden crearse informes estáticos mediante liña de comando; ou podense obtener informes a través de un navegador web gracias a un programa CGI.

A modo de exemplo instalaremos e configuraremos awstats para amosar os datos estadísticos do virtual host www.paxina1.org.

Preparación do virtual host

Se queremos que awstats lea o acceso a cada virtual host por separado gardaremos os accesos en ficheiros separados para cada virtual host. No ficheiro /etc/apache2/sites-availables/paxina1.conf:

...
CustomLog ${APACHE_LOG_DIR}/access_pagina1.log combined
...

Instalación

# sudo apt-get install awstats

Configuración de Apache para o acceso o script CGI awstats.pl

Crearemos a configuración de apache para o acceso o script CGI awstats.pl no ficheiro:

  • /etc/apache2/conf-available/awstats.conf:
ScriptAlias /awstats/ /usr/lib/cgi-bin/
Alias /awstats-icon/ /usr/share/awstats/icon/
Alias /awstatsclasses/ /usr/share/java/awstats/

<Directory "/usr/lib/cgi-bin/">
    Options None
    AllowOverride None
</Directory>

Habilitar módulo e habilitar configuración

Activamos la configuración el módulo cgi:

# sudo a2enmod cgi
# sudo a2enconf awstats

E reinciamos o servidor:

Configuración de awstats

Crearemos un ficheiro de configuración de awstats para cada virtual host:

# cd /etc/awstats
# cp awstats.conf awstats.www.pagina1.org.conf

Editamos o fichero con seguintes parámetros:

LogFile="/var/log/apache2/access_paxina1.log"
SiteDomain="www.paxina1.org" 

Xeneración de informes

Para xenerar os datos que se van a amosar no informe executamos:

/usr/lib/cgi-bin/awstats.pl -config=www.paxina1.org -update

Programación de informes

Engadimos unha tarefa programada para que se xeneren os informes cada certo tempo (neste caso unha hora):

# crontab -e

0 * * * * /usr/lib/cgi-bin/awstats.pl -config=www.paxina1.org -update

Uso

Para visualizar o informe no navegador accedemos a la seguiente URL:

http://www.paxina1.org/awstats/awstats.pl?config=www.paxina1.org

Referencias

Créditos