AnalogEl programa por excelencia que permite obtener informes y estadísticas de acceso a cualquier Web de manera automática, es sin duda el Analog. Bien configurado es una herramienta potencial para quien desea ofrecer a sus clientes una información de valor añadido.
Inicialmente puede parecer complicada su configuración, pero realmente es una de las más sencillas y estructuradas. Sólo tiene un punto negro, el no contemplar en ningún momento la posibilidad de dominios virtuales. Pero tranquilo, más adelante explicaré la forma en que he solucionado este problema.
La versión que he instalado es la siguiente:
analog-2.11-2.i386.rpm
Este programa consta de un único fichero de configuración, el /etc/analog.cfg. Pero no se va a utilizar un único fichero debido a que habrán dos ficheros de configuración para cada dominio. Por un lado el que permite obtener las estadísticas mensuales y por otro lado el de las anuales.
Para el dominio principal del ISP, en este caso fibranet.com, estos dos ficheros de configuración residirán en el directorio estándard (/etc). Más adelante se explica la configuración para los dominios virtuales.
Para poder diferenciar los ficheros de configuración del informe mensual del anual, es necesario tenerlos con nombres distintos:
/etc/analog-m.cfg (para el informe mensual)
/etc/analog-a.cfg (para el informe anual)
Toda la configuración que he realizado ha sido de cara a informar a los clientes mediante estadísticas por correo electrónico. Es decir, aunque el programa me permite visualizar las estadísticas desde la Web, he optado por la modalidad ASCII.
Una parte de la configuración de este fichero, es la de especificar de donde recogerá la información de los navegadores creada por el servidor de Web en el fichero /var/log/httpd/agent_log. El único problema es que algunos navegadores tienen un código de reconocimiento personal que le diferencia mucho de su nombre real. Por ejemplo, el famoso navegador Netscape Navigator aparece en el fichero de logs con el nombre "Mozilla". Si se entregase a los clientes la información con estos nombres tan "raros", probablemente no sacarían nada en claro.
Para solucionar este problema y dar una información como es debido, el programa Analog dispone de la opción "BROWALIAS". Esta opción tiene dos parámetros, el primero es el nombre con el que aparece en el fichero de logs y el segundo el nombre con el que debe aparecer en los informes y estadísticas.
Debido a la gran cantidad de navegadores y de versiones para diferentes plataformas, la cantidad de opciones "BROWALIAS" cada vez es mayor. Eso haría impensable tener que incorporar en cada fichero de configuración de cada dominio virtual todos los alias de todas las versiones diferentes de navegadores. Para poder solventar este problema, he separado la parte que trata de los alias y he creado un fichero anexo al fichero de configuración. Este fichero se llama /var/analog/browalias.cfg y para poder incorporarlo a cada uno de los ficheros de configuración que tiene cada dominio virtual, sólo es necesario añadir la opción "CONFIGFILE". Esta opción permite realizar un include de otro fichero y el resultado es como si el fichero añadido formara parte del fichero de configuración.
De este modo, sólo es necesario modificar un único fichero de alias para todos los dominios. Es importante ir repasando las estadísticas e ir incorporando nuevos alias para estar al día de nuevas versiones de navegadores.
A continuación se muestra una versión parcial del actual fichero de navegadores que tengo. Si alguien está interesado en obtenerlo completo que me lo haga saber. Es demasiado grando como para ponerlo todo entero.
# Fichero anexo para los Browser Aliases
#
# Linux
# -----
BROWALIAS "Mozilla/3.0 (X11; I; Linux*"
"Netscape 3.0 X11 Linux"
BROWALIAS "Mozilla/3.01 (X11; I; Linux*"
"Netscape 3.01 X11 Linux"
BROWALIAS "Mozilla/4.02 [en] (X11; I; Linux*"
"Netscape 4.02 English X11 Linux"
BROWALIAS "Mozilla/4.03 [en] (X11; I; Linux*"
"Netscape 4.03 English X11 Linux"
BROWALIAS "Mozilla/4.04 [en] (X11; I; Linux*"
"Netscape 4.04 English X11 Linux"
BROWALIAS "Mozilla/4.05 [en] (X11; I; Linux*"
"Netscape 4.05 English X11 Linux"
# SCO
# ---
BROWALIAS "Mozilla/3.01Gold (X11; I; SCO*"
"Netscape 3.01 Gold X11 SCO UNIX"
# Windows3.x
# ----------
BROWALIAS "Mozilla/2.02 [es] (Win16; I)"
"Netscape 2.02 Spanish Windows 3.x"
BROWALIAS "Mozilla/3.01 (Win16; I)"
"Netscape 3.01 Windows 3.x"
BROWALIAS "Mozilla/3.01 [es]C (Win16; I)"
"Netscape 3.01 Spanish Windows 3.x"
BROWALIAS "Mozilla/3.01Gold [es]C (Win16; I*"
"Netscape 3.01Gold Spanish Windows 3.x"
BROWALIAS "Mozilla/3.04 (Win16; I)"
"Netscape 3.04 Windows 3.x"
BROWALIAS "Mozilla/2.0 (compatible; MSIE 3.0; Windows 3.1*"
"Microsoft Explorer 3.0 Windows 3.x"
BROWALIAS "Mozilla/2.0 (compatible; MSIE 3.01; Windows 3.1*"
"Microsoft Explorer 3.01 Windows 3.x"
# Windows95
# ---------
BROWALIAS "Mozilla/2.0 (Win95; I)"
"Netscape 2.0 Windows95"
BROWALIAS "Mozilla/2.02 [es] (Win95; I)"
"Netscape 2.02 Spanish Windows95"
BROWALIAS "Mozilla/3.01 (Win95; I)"
"Netscape 3.01 Windows95"
BROWALIAS "Mozilla/3.01 [es] (Win95; I*"
"Netscape 3.01 Spanish Windows95"
BROWALIAS "Mozilla/3.01 [es]C (Win95; I*"
"Netscape 3.01 Spanish Windows95"
BROWALIAS "Mozilla/3.01 [es]C-NSCP (Win95; I*"
"Netscape 3.01 Spanish Windows95"
BROWALIAS "Mozilla/3.01Gold [es] (Win95; I*"
"Netscape 3.01Gold Spanish Windows95"
BROWALIAS "Mozilla/3.01Gold [es]C (Win95; I*"
"Netscape 3.01Gold Spanish Windows95"
BROWALIAS "Mozilla/3.03 [es] (Win95; I*"
"Netscape 3.03 Spanish Windows95"
BROWALIAS "Mozilla/4.01 [en] (Win95; I*"
"Netscape 4.01 English Windows95"
BROWALIAS "Mozilla/4.02 [es] (Win95; I*"
"Netscape 4.02 Spanish Windows95"
BROWALIAS "Mozilla/4.03 [es] (Win95; I*"
"Netscape 4.03 Spanish Windows95"
BROWALIAS "Mozilla/4.04 [es] (Win95; I*"
"Netscape 4.04 Spanish Windows95"
BROWALIAS "Mozilla/4.04 [en] (Win95; I*"
"Netscape 4.05 English Windows95"
BROWALIAS "Mozilla/4.05 [en] (Win95; I*"
"Netscape 4.05 English Windows95"
BROWALIAS "Mozilla/2.0 (compatible; MSIE 3.0; Windows 95*"
"Microsoft Explorer 3.0 Windows95"
BROWALIAS "Mozilla/2.0 (compatible; MSIE 3.0; AK; Windows 95*"
"Microsoft Explorer 3.0 Windows95"
BROWALIAS "Mozilla/2.0 (compatible; MSIE 3.01; Windows 95*"
"Microsoft Explorer 3.01 Windows95"
BROWALIAS "Mozilla/2.0 (compatible; MSIE 3.01; AK; Update B; Windows 95*"
"Microsoft Explorer 3.01 Windows95"
BROWALIAS "Mozilla/2.0 (compatible; MSIE 3.02; Windows 95*"
"Microsoft Explorer 3.02 Windows95"
BROWALIAS "Mozilla/2.0 (compatible; MSIE 3.02; AK; Windows 95*"
"Microsoft Explorer 3.02 Windows95"
BROWALIAS "Mozilla/2.0 (compatible; MSIE 3.02; Update a; Windows 95*"
"Microsoft Explorer 3.02 Windows95"
BROWALIAS "Mozilla/4.0 (compatible; MSIE 4.0; Windows 95*"
"Microsoft Explorer 4.0 Windows95"
BROWALIAS "Mozilla/4.0 (compatible; MSIE 4.01; Windows 95*"
"Microsoft Explorer 4.01 Windows95"
# Windows98
# ---------
BROWALIAS "Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)"
"Microsoft Explorer 4.01 Windows98"
# WindowsNT
# ---------
BROWALIAS "Mozilla/3.03 [es] (WinNT; I*"
"Netscape 3.03 Spanish WindowsNT"
BROWALIAS "Mozilla/4.04 [en] (WinNT; I*"
"Netscape 4.04 English WindowsNT"
BROWALIAS "Mozilla/4.05 [en] (WinNT; I*"
"Netscape 4.05 English WindowsNT"
BROWALIAS "Mozilla/4.0 (compatible; MSIE 4.0; Windows NT*"
"Microsoft Explorer 4.0 WindowsNT"
BROWALIAS "Mozilla/4.0 (compatible; MSIE 4.01; Windows NT*"
"Microsoft Explorer 4.01 WindowsNT"
# Apple Macintosh
# ---------------
BROWALIAS "Mozilla/3.01Gold [es] (Macintosh; I*"
"Netscape 3.01Gold Spanish Macintosh"
Exactamente la misma solución he implantado para todas aquellas opciones dentro del fichero de configuración que son completamente iguales para todos los dominios del servidor.
A continuación se detalla el contenido del fichero /var/analog/standard.cfg, donde hay las configuraciones que comparten todos los dominios del servidor.
# Fichero anexo para las configuraciones estandard de los dominios
#
# REQINCLUDE pages
LINKINCLUDE pages
UNCOMPRESS *.gz,*.Z gzcat
BROWOUTPUTALIAS Mozilla Netscape
BROWOUTPUTALIAS "Mozilla (compatible)" "Netscape (compatible)"
BROWOUTPUTALIAS IWENG AOL
OUTPUT ASCII
IMAGEDIR /home/httpd/icons/
LANGUAGE SPANISH
SEPCHAR .
NUMLOOKUP ON
DNSFILE /var/analog/resolveds
LASTSEVEN OFF
REQUEST OFF
FULLHOSTS ON
FULLBROWSER ON
DAILY OFF
WEEKLY OFF
DIRECTORY OFF
La opción "OUTPUT" especifica el tipo de salida de la información. En mi caso será ASCII, así que podré enviarla dentro de un correo electrónico.
La opción "IMAGEDIR" sólo tiene efecto cuando la opción anterior es de tipo "GRAPHICAL". La conservo aquí por si deseo hacer algunas variaciones en el futuro.
La opción "LANGUAGE" especifica el lenguaje con el que aparecerán las estadísticas.
La opción "SEPCHAR" especifica el carácter a utilizar para separar los millares de una cantidad.
La opción "NUMLOOKUP" obliga al Analog a resolver todas las direcciones IP y convertirlas en hostnames.
La opción "DNSFILE" especifica el nombre del fichero donde irán a parar todas las direcciones que no se hayan podido resolver. De esta manera, no volverá a intentarlo y optimizará mejor el tiempo.
La opción "LASTSEVEN" desactivada dará una información más clara.
La opción "REQUEST" desactivada omitirá el informe de peticiones de ficheros.
La opción "FULLHOSTS" dará una información más detallada de los ordenadores que hayan accedido a la Web.
La opción "FULLBROWSER" permitirá obtener una información más detallada del navegador que haya accedido a la Web.
Las opciones "DAILY" y "WEEKLY" están desactivadas porque no me interesa obtener la información ni diariamente ni semanalmente.
La opción "DIRECTORY" está desactivada porque no es necesario el informe de accesos a los ficheros.
Para automatizar el proceso de estadísticas mensuales y anuales del dominio fibranet.com, se ha establecido introducir las siguientes líneas al fichero /etc/crontab:
00 00 1 * * root /usr/bin/analog +g/etc/analog-m.cfg 2>/dev/null
50 23 31 12 * root /usr/bin/analog +g/etc/analog-a.cfg 2>/dev/null
Ahora tan sólo queda detallar qué opciones tendrá el fichero de configuración principal de cada dominio virtual.
Tal y como se ha explicado al inicio, cada dominio virtual constará de dos ficheros de configuración. Por un lado el que hace referencia a los informes mensuales, y por otro lado el de los anuales. Para poder diferenciar un fichero del otro, yo les he dado los siguientes nombres:
/var/analog/macrobit-m.cfg (para los informes mensuales)
/var/analog/macrobit-a.cfg (para los informes anuales)
Estos ficheros tienen las mismas opciones para todos los dominios virtuales del servidor, y también para el dominio principal fibranet.com. La única diferencia es que los ficheros del dominio fibranet.com, residen en el directorio /etc, mientras que los de los dominios virtuales están en el directorio /var/analog.
A continuación detallo el contenido del fichero de informes mensuales:
# Configuration file for analog 2.1
#
# MACROBIT.ES (mensual)
#
LOGFILE /var/log/httpd/macrobit.es-access_log
REFLOG /var/log/httpd/macrobit.es-referer_log
BROWLOG /var/log/httpd/macrobit.es-agent_log
ERRLOG /var/log/httpd/macrobit.es-error_log
OUTFILE /var/analog/outs/macrobit.es
HOSTNAME macrobit.es
HOSTURL http://www.macrobit.es
HOURLY ON
FULLDAILY ON
MONTHLY OFF
CONFIGFILE /var/analog/browalias.cfg
CONFIGFILE /var/analog/standard.cfg
Con una simple mirada se puede comprobar que las siete primeras opciones son las que se deberían de cambiar para cada dominio virtual.
A continuación hay tres opciones que especifican que el informe ha de ser mensual. Es decir, se desactiva la opción "MONTHLY" y se activan las opciones "FULLDAILY" y "HOURLY" (para saber que horas han sido las de más tráfico).
En cambio, para los informes anuales estas tres opciones deberían ser totalmente al revés:
HOURLY OFF
FULLDAILY OFF
MONTHLY ON
Finalmente las dos últimas opciones permiten especificar al programa Analog que el fichero de configuración consta de este mismo más dos adicionales.
Para automatizar el proceso de informes mensuales y anuales, y debido a que tal y como se ha explicado anteriormente, no permite procesamientos independientes para los dominios virtuales, se ha establecido añadir dos líneas (una para el informe mensual y otra para el anual) en el fichero /etc/crontab:
05 00 1 * * root /usr/local/etc/crontab-scripts/analogvirtual mensual
55 23 31 12 * root /usr/local/etc/crontab-scripts/analogvirtual anual
El script que hay en estas dos líneas del cron generará un fichero para cada dominio virtual, donde estarán todas las estadísticas de ese dominio. Es decir, el fichero de las estadísticas para el dominio macrobit.es serà:
/var/analog/outs/macrobit.es
A continuación enviará un correo electrónico al administrador de cada dominio virtual con el contenido de su fichero.
Para poder saber qué usuario es el administrador, se ha establecido que cuando
se dé de alta un dominio virtual, también se dé de alta un usuario con el
acrónimo del nombre del dominio virtual.
Este acrónimo servirá además para la identificación de la empresa a través de
la conexión por Infovía. Es decir, la empresa Macrobit Software, tiene el
dominio "macrobit.es", y el usuario administrador dado de alta se llamará
"macrobit".
Así pues, para conectarse a Internet el nombre del usuarió será
"macrobit@fibranet" y a continuación su clave de acceso.
Seguidamente se muestra el script que generará todo el proceso de informes mensuales y anuales:
#!/bin/sh
#
# @(#) Macrobit Software, SL
# Copyright (C) 1998 by Jordi Sanfeliu <admin@fibranet.com>
#
# Sintaxis: analogvirtual {mensual|anual}
#
#
# Este script genera el fichero de estadisticas (mensual o anual) para cada uno
# de los dominios virtuales que tiene el servidor. Seguidamente, envia ese
# fichero por email al administrador de cada dominio virtual.
#
DIRVIRT="/var/analog/"
DIROUTS="/var/analog/outs/"
MODE=
# Comprueba si el parametro dado es "mensual" o "anual"
if [ $# != 1 ] ; then
exit 1
elif [ $1 = "mensual" ] ; then
MODE="m"
elif [ $1 = "anual" ] ; then
MODE="a"
fi
# Genera los ficheros ASCII de estadisticas de cada dominio virtual
for DOMINIVIRTUAL in `ls ${DIRVIRT}*-${MODE}.cfg`
do
/usr/bin/analog +g${DOMINIVIRTUAL} 2>/dev/null
done
# Prepara los ficheros de estadisticas cortando las dos ultimas lineas que
# se refieren al programa que las ha generado (analog). Seguidamente, envia
# esos ficheros generados por email a cada administrador del dominio virtual.
#
# Cada uno de estos fichero tiene como nombre el dominio virtual entero, es
# decir, "dominiovirtual.com" de esta manera ya tenemos la parte del host a
# punto para el email. Se establece que cada dominio virtual tiene como nombre
# de usuario un acronimo del propio dominio de segundo nivel, es decir en este
# caso "dominiovirtual". Asi pues, el email quedaria
# "dominiovirtual@dominiovirtual.com".
for FICHERO in `ls ${DIROUTS}`
do
NUMLIN=`cat ${DIROUTS}${FICHERO} | wc -l`
ADMIN=`echo ${FICHERO} | sed s'/[.].*//'`
head -`expr ${NUMLIN} - 2` ${DIROUTS}${FICHERO} | mail -s
"Estadísticas mensuales de accesos a su Web" ${ADMIN}@${FICHERO}
done