AWStats

aKtoR aktor@aktornet.ath.cx

Instalación básica del analizador de logs 'AWStats'

Bilbao, 11 de enero del 2003. v 0.3


1.-Introducción

AWStats (Advanced Web Statistics) es un visualizador avanzado de logs, que genera estadísticas gráficas a partir de los logs del sistema. Es software libre (que no gratis), se distribuye bajo la licencia GNU GPL (General Public License) y su mantenedor es Jonas Smedegaard.

Y digo, logs en general, porque AWStat es capaz de visualizar logs generados por distintos servidores, entre los que merece la pena destacar:

AWStats soporta cualquier sistema operativo, debido a que está escrito integramente en Perl, y por ello es suficiente con que el servidor que lo va a interpretar tenga el módulo correspondiente instalado. Siendo así, las estadísticas de los logs se pueden generar tanto desde la línea de comandos, como un CGI y mostrar la información en una o varias páginas Web.

AWStats puede generar estadísticas en 33 idiomas, entre los cuales, por cercanía y afinidad, debemos destacar el castellano y el catalán. ¿Que resulta que quieres poder generarlas en otros idiomas no soportados? Muy fácil. Cada archivo de idioma es un archivo de texto con las frases que se van a mostrar. ¿Y tú? ¿A qué estás esperando a mostrar tus estadísticas en euskera en tu Debian GNU/Linux? XDD.

Por contra, y frente a otros visualizadores de logs escritos en C, AWStats más lento. Sin embargo vas a ser tu quién decida cuando actualizar las estadísticas, pudiendo elegir horas de "baja carga" en el servidor, con lo que la velocidad con que se generan las nuevas estadísticas puede resultar secundario.

2.-Instalación

La instalación aquí explicada está probada sobre un servidor corriendo GNU / Linux Debian Sarge. ¿Por qué Debian? Eso es otro tema que otro día trataremos ...

El primer paso consiste en instalar el paquete awstats (awstats_5.1-5_all.deb). Debian nos lo pone todo taan fácil XDD:
AsteriX:~# apt-get install awstats

Entre los archivos instalados, vamos a destacar los siguientes:

3.-Configuración

Esta configuración permite mostrar gráficamente los logs y estadísticas generadas por tu servidor Apache. Para otros servidores... todo se andará, quizás en otro momento...

3.1.-Tipo de logs

Asegúrate de que tu servidor Apache loggea los accesos de manera combinada NCSA combined/XLF/ELF. AWStats también es capaz de visualizar los logs con otros formatos, pero éste es el más sencillo. Para ello asegurate de que el archivo de configuración de tu apache (normalmente en /etc/apache/httpd.conf) tiene la seguiente directiva: CustomLog /yourlogpath/yourlogfile combined

En mi caso es:
AsteriX:~# cat /etc/apache/httpd.conf | grep -v ^# | grep CustomLog
CustomLog /var/log/apache/access.log combined

Para asegurarte de que el apache logea de la forma que queremos, comprueba que los logs tienen el siguiente formato:
80.34.70.29 - - [02/Jan/2003:10:51:01 +0100] "GET / HTTP/1.1" 200 530 "-" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.0) Gecko/20020623 Debian/1.0.0-0.woody.1"

Ahora le tenemos que indicar a AWStats el formato en que están los logs. Eso se hace en /etc/awstats/awstats.conf mediante la directiva LogFormat
# 1 - Apache native combined log format (NCSA combined/XLF/ELF log format)
# 2 - IIS log format (W3C log format)
# 3 - Webstar native log format
# 4 - Apache or Squid native common log format (NCSA common log format)
# With LogFormat=4, some features (browsers, os, keywords...) can't work.
# 5 - ISA server native standard log format
# 6 - Lotus Notes combined log format

LogFormat=1

3.2.-Idioma

AWStats viene preconfigurado para mostrar los logs y estadísticas en ingles, aunque bien es cierto que trae un montón de archivos de idioma. Cambiarlo es muy fácil, así que vamos a ello.

Los archivos de idioma han sido instalados en el directorio /usr/share/awstats/lang/. Antes de nada, comprobaremos que el archivo de configuración de AWStats (normalmente en /etc/awstats/awstats.conf) conoce que esa es la ruta en donde debe de buscar los archivos de idioma.
DirLang="/usr/share/awstats/lang"

Para que el idioma por defecto sea el castellano, tenemos que sustituir el valor de la directiva Lang 'en' por 'es' (también en /etc/awstats/awstats.conf).
Lang="es"

La página que se genera nos muestra en la parte superior izquierda unas banderas con las que podemos elegir en cualquier momento el idioma que queramos que muestre la página. Si queremos modificar los idiomas que aparecen, su orden, etc. utilizaremos la directiva ShowFlagLinks, con los identificativos de los idiomas que queramos que aparezcan separados por un espacio. Veamos un ejemplo:

ShowFlagLinks="en es es_cat"

En este ejemplo queremos que aparezcan la opción de poder elegir entre los idiomas ingles, castellano y catalan (en este orden). Si, si, soporta catalan incluso!. Pero hay un pero, la bandera catalana no está entre los archivos instalados (al menos en la versión 5.1-5). No hay problema, puedes bajartela de aquí. }:o
La imágen tienes que guardarla con uid (usuario) y gid (grupo) root con las demás imágenes (ver 3.3).

AsteriX:~# ls -l /usr/share/awstats/icon/flags/es_cat.png
-rw-r--r-- 1 root root 998 ene 4 01:37 /usr/share/awstats/icon/flags/es_cat.png

3.2.1.-Euskara

Acutalmente el AWStats no está traducido al euskara. Espero que eso cambie en unos días, porque me he propuesto aportar mi granito de arena y traducirlo. Por ahora solamente puedo ofreceros la ikurriña, a modo de icono (ver 3.2.).

3.3.-Imágenes

Para que las imágenes que contiene la página que se va a generar se vean correctamente, hay que indicarle a AWStats donde las ubicamos. Para ello disponemos de la directiva DirIcons en el archivo de configuración (/etc/awstats/awstats.conf). Esta directiva se caracteriza porque la ruta que indiquemos va a resulta relativa a la ubicación de la página web.

Por ello NO podemos poner:
DirIcons="/usr/share/awstats/icon/"
Porque estaría intentando acceder a 'http://my.doma.in/usr/share/awstats/icon/icon_name.png'

La solución a este inconveniente es bien sencilla. Utilizar los alias de nuestro servidor preferido, Apache. Solamente tenemos que añadir la siguiente línea al archivo de configuración del apache (/etc/apache/httpd.conf):
Alias /awstats-icon/ /usr/share/awstats/icon/

De modo que el valor que tiene que tomar la directiva es 'awstats-icon', nombre del alias que acabamos de crear:
DirIcons="/awstats-icon"

3.4.-Intérprete de Perl

El archivo awstats.pl necesita del intérprete de Perl para generar las estadísticas de los logs. Por ello debemos asegurarnos de que esté bien configurado, indicándole al script en Perl donde se encuentra el intérprete. En mi caso la primera línea del archivo awstats.pl es:
#!/usr/bin/perl

3.5.-SiteDomain

Como en un mismo host pueden "cohabitar" distintos dominios, SiteDomain es la directiva que indica a cual de esos dominios nos estamos refiriendo. En caso de tener varios dominios en un mismo host (virtual host) es recomendable generar logs independientes, es decir, uno para cada dominio. En mi caso:
SiteDomain="aktornet.ath.cx"

4.-Puesta en marcha

Una vez llegado a este punto, deberíamos de ser capaces de visualizar la página web por medio del enlace http://sitedomain/cgi-bin/awstats.pl. Si no eres capaz de ver la página generada por AWStats o muestra algún tipo de error, revisa de nuevo la configuración o quizás te falte algo que he pasado por alto.

Enseguida te darás cuenta de que las estadísticas están vacías. Eso es porque el archivo no lee los datos de los logs directamente sino que genera un archivo de texto y muestra los datos a partir de dicho texto. Los archivos de texto generados se encuentran en:
aktor@AsteriX:/usr/lib/cgi-bin$ ls -l
total 544
-rw-rw-rw- 1 root root 6860 ene 3 22:09 awstats012003.txt
-rw-rw-rw- 1 root root 6068 ene 3 22:09 awstats122002.txt
-rwxr-xr-x 1 root root 407041 dic 15 21:40 awstats.pl

Para generar estos archivos por primera vez o actualizarlos manualmente, ejecutamos el archivo awstats.pl con los siguientes parámetros:
/usr/lib/cgi-bin/awstats.pl -config=myvirtualhostname -update

Pero generar estos datos a mano es un coñazo, menos mal que tenemos a nuestro amigo cron, que se encargara de ejecutarlo periódicamente obediente, obediente. Como hemos mencionado en el apartado de instalación (ver arriba), la versión de este paquete de awstats instala una entrada en el demonio de cron (cron.d). Veámosla:
aktor@AsteriX:~$ ls -l /etc/cron.d
total 8
-rw-r--r-- 1 root root 200 sep 22 14:53 awstats

aktor@AsteriX:~$ cat /etc/cron.d/awstats
0,10,20,30,40,50 * * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=awstats -update >/dev/null

Buff! que cristo, no? va... mucho ruido y pocas nueces... El archivo de cron viene a decir que el usuario 'www-data' actualice el 'awstats.pl' cada 10 minutos, y toda la "basura" que quiera sacar por pantalla la redirija a la "papelera de reciclaje". Vamos, eso entiendo yo.

Por norma general es recomendado confirar el cron para que actualice las estadísticas en horas de menor carga (a la noche), ya que el archivo access.log puede ser grande y ello originaría una pequeña pérdida en el rendimiento del server.

Solo hay un pero a todo lo anterior. ¿Cual? Pues que los permisos del archivo de logs access.log (640) no permiten que el usuario www-data lo lea.
aktor@AsteriX:~$ ls -l /var/log/apache/access.log
-rw-r----- 1 root adm 159743 ene 10 02:16 /var/log/apache/access.log

Me imagino que habrá varias soluciones a este problema, yo he optado por cambiar los permisos del archivo /var/log/apache/access.log a 644, lo que implica que cualquier usuario puede leer los archivos de log. A pesar de ello, esta solución no supone una perdidad del nivel de seguridad en nuestro sistema. Por tanto, el archivo de logs queda de la siguiente manera:
aktor@AsteriX:~$ ls -l /var/log/apache/access.log
-rw-r--r-- 1 root adm 159743 ene 10 02:16 /var/log/apache/access.log


Este documento ha sido escrito por un miembro de e-GHOST y Metabolik, y su contenido es libre de ser reproducido en otros medios bajo las condiciones de la Licencia FDL (GNU Free Documentation License).