Oct 102012
 
Artículo Apache

AWStats es una aplicación escrita en Perl que proporciona una valiosa información acerca del tráfico que recibe un servidor web. En este artículo veremos cómo instalar y configurar AWStats, y las posibilidades que ofrece.

Instalación de AWStats

Comenzamos por descargar el fichero awstats-7.0.zip desde la página oficial de AWStats en sourceforge.

Descomprimimos el fichero bajo /usr/local. Despues, debemos renombrar como ‘awstats’ el directorio ‘awstats-7.0’ creado . A continuación, ejecutamos el script de instalación ‘awstats_configure.pl’ que se encuentra en el subdirectorio ‘tools’ bajo dicho directorio:

$ cd /usr/local
$ unzip awstats-7.0.zip
$ mv awstats-7.0 awstats
$ cd awstats/tools
$ sudo perl awstats_configure.pl

El log completo de la instalación es como sigue:

1. El script solicita la ubicación del fichero de configuración del servidor web:

$ sudo perl awstats_configure.pl

----- AWStats awstats_configure 1.0 (build 1.9) (c) Laurent Destailleur -----
This tool will help you to configure AWStats to analyze statistics for
one web server. You can try to use it to let it do all that is possible
in AWStats setup, however following the step by step manual setup
documentation (docs/index.html) is often a better idea. Above all if:
- You are not an administrator user,
- You want to analyze downloaded log files without web server,
- You want to analyze mail or ftp log files instead of web log files,
- You need to analyze load balanced servers log files,
- You want to 'understand' all possible ways to use AWStats...
Read the AWStats documentation (docs/index.html).

-----> Running OS detected: Linux, BSD or Unix

-----> Check for web server install

Enter full config file path of your Web server.
Example: /etc/httpd/httpd.conf
Example: /usr/local/apache2/conf/httpd.conf
Example: c:Program filesapache groupapacheconfhttpd.conf
Config file path ('none' to skip web server setup):
> /etc/apache2/httpd.conf

2. El script modifica el fichero de configuración añadiendo las directrices de acceso al frontend de AWStats:

-----> Check and complete web server config file '/etc/apache2/httpd.conf'
  Add 'Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"'
  Add 'Alias /awstatscss "/usr/local/awstats/wwwroot/css/"'
  Add 'Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"'
  Add 'ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"'
  Add '<Directory>' directive
  AWStats directives added to Apache config file.

-----> Update model config file '/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf'
  File awstats.model.conf updated.

3. El script crea un fichero de configuración para nuestro web site. Como veremos más adelante, será necesario editar este script para adaptarlo a nuestra instalación

-----> Need to create a new config file ?
Do you want me to build a new AWStats config/profile
file (required if first install) [y/N] ? y

-----> Define config file name to create
What is the name of your web site or profile analysis ?
Example: www.mysite.com
Example: demo
Your web site, virtual server or profile name:
> www.openalfa.com

-----> Define config file path
In which directory do you plan to store your config file(s) ?
Default: /etc/awstats
Directory path to store config file(s) (Enter for default):
> 

-----> Create config file '/etc/awstats/awstats.www.openalfa.com.conf'
 Config file /etc/awstats/awstats.www.openalfa.com.conf created.

-----> Restart Web server with '/etc/init.d/apache restart'

4. El script nos indica que será necesario automatizar la ejecución del proceso de actualización, pero que deberemos hacerlo manualmente, como veremos más adelante.

-----> Add update process inside a scheduler
Sorry, configure.pl does not support automatic add to cron yet.
You can do it manually by adding the following command to your cron:
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.openalfa.com
Or if you have several config files and prefer having only one command:
/usr/local/awstats/tools/awstats_updateall.pl now
Press ENTER to continue... 

A SIMPLE config file has been created: /etc/awstats/awstats.www.openalfa.com.conf
You should have a look inside to check and change manually main parameters.
You can then manually update your statistics for 'www.openalfa.com' with command:
> perl awstats.pl -update -config=www.openalfa.com
You can also read your statistics for 'www.openalfa.com' with URL:
> http://localhost/awstats/awstats.pl?config=www.openalfa.com

Press ENTER to finish...

Una vez finalizada la configuración inicial, debemos crear el directorio en donde se guardará la base de datos:

$ sudo mkdir /var/lib/awstats

Y ya podemos acceder a la url ‘http://localhost/awstats/awstats.pl?config=www.openalfa.com’ con nuestro navegador para dar un primer vistazo al frontend de AWStats:

Naturalmente, todos los datos están a cero en esta primera pantalla, porque todavía no hemos procesado ningún fichero de log. Pero ya podemos ver la variedad de informes que AWStats va a poner a nuestra disposición con un solo click desde esta página.

 

Proceso de los ficheros de log

Como hemos visto durante el proceso de configuración más arriba, el proceso de un fichero de log de accesos se realiza ejecutando el comando “/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.openalfa.com”, pero primero debemos editar el fichero de configuración para indicar la ubicación y el formato de los nombres de fichero de log que utiliza nuestro servidor.

En nuestro servidor los ficheros se crean con nombres de la forma ‘access_log.YYYY-MM-DD-00_00_00’, bajo el directorio ‘/var/log/apache2/openalfa’. Por ejemplo:

access_log.2012-10-01-00_00_00

Por lo tanto, debemos editar el fichero de configuración ‘/etc/awstats/awstats.www.openalfa.com.conf’, para sustituir la línea “LogFile=”/var/log/httpd/mylog.log”” por:

LogFile="/var/log/apache2/openalfa/access_log.%YYYY-24-%MM-24-%DD-24-00_00_00"

De esta manera aseguramos que cada vez que se ejecute la actualización, se va a procesar el fichero de log correspondiente al día anterior al momento en que se ejecuta el script.

Una vez editado el fichero de configuración, ejecutamos el script:

$ sudo /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.openalfa.com

y volviendo al navegador, refrescamos la página de awstats y vemos que ya aparecen en ella los primeros datos:

 

Por último, sólo tenemos que automatizar la ejecución diaria del proceso, añadiendo una entrada en cron para que se ejecute todos los días, por ejemplo a las 03:05

5 3 * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.openalfa.com

 

Proceso de ficheros de log antiguos

Presumiblemente, cuando realizamos la instalación de AWStats en nuestro servidor, ya existen una serie de ficheros de log de accesos correspondientes a los días, meses e incluso años anteriores. Si queremos procesar este historial de accesos, debemos:

1. Eliminar la base de datos que se ha creado en la primera actualización:
$ rm /var/lib/awstats/*
2. editar el fichero de configuración  ‘/etc/awstats/awstats.www.openalfa.com.conf’ para especificar el fichero de log a procesar de la forma:
LogFile="/usr/local/awstats/tools/logresolvemerge.pl /var/log/apache2/openalfa/access_* |"

Es decir, que el script de proceso va a leer la salida generada por el script ‘logresolvemerge.pl’ que viene incluido en la instalación de AWStats.

Este script va a leer todos los fichero de log que se le indiquen (en nuestro caso, todos los ficheros ‘access_*’ bajo el directorio ‘/var/log/apache2/openalfa’), y se los va a entregar, ordenados por la fecha de los registros que contiene, al script de actualización.

3. Ejecutar el proceso de actualización
$ sudo /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.openalfa.com
4. Volver a editar el fichero de configuración, para volver a asignar a LogFile su valor anterior:
LogFile="/var/log/apache2/openalfa/access_log.%YYYY-24-%MM-24-%DD-24-00_00_00"

 

Cómo configurar en AWStats más de un sitio web

Puede ocurrir que nuestro servidor web tenga configurados varios sitios web (por ejemplo, mediante directrices “VirtualHost”). En el caso de openalfa, los tres dominios www.openalfa.com, blog.openalfa.com y blog-en.openalfa.com son servidos por el mismo servidor web.

Para configurar el proceso en AWStats de varios sitios web, basta con crear bajo el directorio ‘/etc/awstats’ un fichero de configuración para cada uno de ellos, editandolo para especificar en el parámetro “LogFile” la ubicación y formato de sus ficheros de log.

Por otra parte, en lugar de crear una entrada en cron para cada uno de ellos, podemos crear una única entrada para procesarlos todos, de la forma:

5 3 * * * /usr/local/awstats/tools/awstats_updateall.pl now

Para cada uno de los nuevos sitios web que configuremos, si queremos procesar ficheros de log anteriores a la instalación de AWStats, se aplican las mismas consideraciones expuestas en el apartado anterior.

 Publicado por en 4:07 pm

  2 Respuestas a “Cómo analizar los logs de acceso de un servidor web con AWStats”

  1. Hola, quería saber si es posible insertar el número total de visitas unicas en la pagina principal de una web (por ejemplo a pie de pagina) sin necesidad de entrar en awstast ( a modo de contador de visitas simple pero que sean del awstats) y al darle click al número que entre en las estadisticas.

    Un saludo Paco

    • Hola Paco,
      Para implementar el contador de visitas, hay que escribir un código que extraiga el total de visitas de la base de datos de awstats, y lo incorpore a un enlace a “/awstats/awstats.pl” en la página principal.

      La base de datos es un fichero de texto bajo el directorio “/var/lib/awstats”. En este directorio hay un fichero por cada mes, con el nombre “awstatsMMYYYY.SITIO.txt” (por ejemplo, awstats122012.blog.openalfa.com.txt)

      En su interior, hay una línea “TotalVisits” con el total de visitas recibidas desde el comienzo del mes. Por ejemplo:

      TotalVisits 76611

      El código para implementar el enlace deberá estar escrito en lenguaje PHP, Perl, Java u otro, dependiendo de como esté hecha la página principal en el sitio en el que se incorpore.

 Deja un comentario

(requerido)

(requerido)