AnalogEl programa per excelència que permet obtenir informes i estadístiques d'accessos a qualsevol Web de manera automàtica, és sens dubte l'Analog. Ben configurat és una eina potencial per qui vol oferir als seus clients una informació de valor afegit.
Inicialment pot semblar complicada la seva configuració, però realment és una de les més senzilles i estructurades que mai s'han vist. Només té un punt negre, i és que no contempla en cap moment la posibilitat de dominis virtuals. Però tranquil, més endavant explicaré la manera en que he solucionat aquest problema.
La versió que he instal·lat és la següent:
analog-2.11-2.i386.rpm
Aquest programa consta d'un únic fitxer de configuració, el /etc/analog.cfg. Però no es farà servir un únic fitxer, degut a que hi hauran dos fitxers de configuració per cada domini. Per una banda el que permet obtenir les estadístiques mensuals i per altre banda el de les anuals.
Pel domini principal de l'ISP, en aquest cas fibranet.com, aquests dos fitxers de configuració residiran al directori stàndard (/etc). Més endavant s'explica la configuració pels dominis virtuals.
Per poder diferenciar els fitxers de configuració de l'informe mensual del de l'informe anual, cal tenir dos fitxers de configuració amb noms diferents:
/etc/analog-m.cfg (per l'informe mensual)
/etc/analog-a.cfg (per l'informe anual)
Tota la configuració que he realitzat ha estat de cara a informar als clients mitjançant estadístiques per correu electrònic. És a dir, tot i que el programa em permet visualitzar les estadístiques des de la Web, he optat per la modalitat ASCII.
Una part de la configuració d'aquest fitxer, és la d'especificar d'on recollirà la informació dels navegadors creada pel servidor de Web en el fitxer /var/log/httpd/agent_log. L'únic problema, és que alguns navegadors tenen un codi de reconeixement personal que es deferencia molt del seu nom real. Per exemple, el famós navegador Netscape Navigator, apareix en el fitxer de logs amb el nom de "Mozilla". Si s'entregués als clients la informació amb aquests noms tant "extranys", probablement no en treurien res.
Per solventar aquest problema i donar una informació com cal, el programa Analog disposa de la opció "BROWALIAS". Aquesta opció té dos paràmetres, el primer és el nom que apareixerà dins del fitxer de logs i el segon el nom que ha d'aparèixer en els informes i estadístiques.
Degut a la quantitat de navegadors i de versions per diferentes plataformes que hi ha, la quantitat d'opcions "BROWALIAS" cada cop és més gran. Es faria impensable haver d'incorporar a cada fitxer de configuració de cada domini virtual tots els alias de totes les versions diferents de navegadors. Per poder solventar aquest problema, he separat la part que tracta els alias i he creat un fitxer anexe al fitxer de configuració. Aquest fitxer es diu /var/analog/browalias.cfg i per poder-lo incorporar a cada fitxer de configuració que té cada domini virtual, només cal afegir la opció "CONFIGFILE". Aquesta opció permet fer un include d'un altre fitxer i el resultat és com si el fitxer afegit formés part del fitxer de configuració.
D'aquesta manera, només n'hi ha prou modificant un únic fitxer d'alias per tots els dominis. És important anar repassant les estadístiques i anar incorporant nous alias per estar al dia de noves versions dels navegadors.
A continuació es mostre una versió parcial de l'actual fitxer de navegadors que tinc. Si algú està interessat a obtenir-lo tot sencer que m'ho faci saber. És massa gran per posar-lo tot sencer.
# Fitxer anexe pels 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"
Exactament la mateixa solució hi ha implantada per totes aquelles opcions dins del fitxer de configuració que són completament iguals en tots els dominis del servidor.
A continuació es detalla el contingut del fitxer /var/analog/standard.cfg, on hi ha les configuracions que comparteixen tots els dominis del servidor:
# Fitxer anexe per les configuracions standards dels dominis.
#
# 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/
LANGFILE /usr/lib/analog/lang/catalana.lng
SEPCHAR .
NUMLOOKUP ON
DNSFILE /var/analog/resolveds
LASTSEVEN OFF
REQUEST OFF
FULLHOSTS ON
FULLBROWSER ON
DAILY OFF
WEEKLY OFF
DIRECTORY OFF
La opció "OUTPUT" especifica el tipus de sortida de la informació. En el meu cas serà "ASCII", així podré enviar-la dins d'un correu electrònic.
La opció "IMAGEDIR" només té efecte quan la opció anterior és de tipus "GRAPHICAL". La conservo aquí per si vull fer algunes variacions en el futur.
La opció "LANGFILE" especifica el llenguatge amb que sortiran les estadístiques. Degut a que he instal·lat l'Analog via format RPM, no he pogut especificar el llenguatge "CATALAN" durant el temps de compilació. És per aixó que s'ha d'especificar el PATH sencer d'on resideix el fitxer del llenguatge desitjat.
La opció "SEPCHAR" especifica el caràcter a utilitzar per separar els milers d'una quantitat.
La opció "NUMLOOKUP" obliga a l'Analog a resoldre totes les adreces IP i convertir-les a hostnames.
La opció "DNSFILE" especifica el nom del fitxer on aniran a parar totes les adreces que no es poden resoldre. D'aquesta manera, no ho tornarà a intentar i optimitzarà millor el temps.
La opció "LASTSEVEN" desactivada donarà una informació més clara.
La opció "REQUEST" desactivada omitirà l'informe de peticions de fitxers.
La opció "FULLHOSTS" donarà una informació més detallada dels ordinadors que hagin accedit a la Web.
La opció "FULLBROWSER" permet obtenir una informació més detallada del navegador que ha accedit a la Web.
Les opcions "DAILY" i "WEEKLY" estàn desactivades perque no m'interessa pas obtenir la informació ni diàriament ni semanalment.
La opció "DIRECTORY" està desactivada perque no és necessari l'informe d'accessos als fitxers.
Per automatitzar el procés d'estadístiques mensuals i anuals del domini fibranet.com, s'ha establert de posar les següents línies al fitxer /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
Ara només queda detallar quines opcions tindrà el fitxer de configuració principal de cada domini virtual.
Tal i com s'ha explicat a l'inici, cada domini virtual constarà de dos fitxers de configuració. Per una banda el que fa referència als informes mensuals, i per altre banda el dels anuals. Per poder diferenciar un fitxer de l'altre, jo els hi he donat els següents noms:
/var/analog/macrobit-m.cfg (pels informes mensuals)
/var/analog/macrobit-a.cfg (pels informes anuals)
Aquests fitxers tenen les mateixes opcions per tots els dominis virtuals del servidor, i també pel domini principal fibranet.com. La única diferència és que els fitxers del domini fibranet.com, resideixen al directori /etc, en canvi, els dels dominis virtuals estan dins del directori /var/analog.
A continuació detallo el contingut del fitxer d'informes mensuals:
# 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
Donant-hi un cop d'ull es pot comprovar que les set primeres opcions són les que s'haurien de canviar per cada domini virtual.
A continuació hi ha tres opcions que especifiquen que l'informe ha de ser mensual. És a dir, es desactiva la opció "MONTHLY" i s'activen la opció "FULLDAILY" i a més a més la "HOURLY" (per saber quines hores han estat les de més trànsit).
En canvi, pels informes anuals, aquestes tres opcions haurien de ser totalment a l'inrevés:
HOURLY OFF
FULLDAILY OFF
MONTHLY ON
Finalment les dues darreres opcions permeten especificar al programa Analog que el fitxer de configuració consta d'aquest mateix més dos més, formant-ne un de sencer.
Per automatitzar el procés d'informes mensuals i anuals, i degut a que tal i com s'ha explicat anteriorment, no permet processaments independents per dominis virtuals, s'ha establert d'afegir dues línies (una per l'informe mensual i l'altre per l'anual) al fitxer /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
L'script que hi ha en aquestes dues línies del cron generarà un fitxer per cada domini virtual, on hi hauran totes les estadístiques d'aquell domini. És a dir, el fitxer de les estadístiques pel domini macrobit.es serà:
/var/analog/outs/macrobit.es
A continuació enviarà un correu electrònic a l'administrador de cada domini virtual amb el contingut del seu fitxer.
Per poder saber quin usuari és l'administrador, s'ha establert que quan es
dongui d'alta un domini virtual, també es dongui d'alta un usuari amb l'acrònim
del nom del domini virtual.
Aquest acrònim servirà a més a més per la identificació de l'empresa mitjançant
la connexió per Infovia. És a dir, la empresa Macrobit Software, té el domini
"macrobit.es", i l'usuari administrador donat d'alta es dirà "macrobit".
Així doncs, per connectar-se a Internet el nom de l'usuari serà
"macrobit@fibranet" i a continuació la seva clau d'accés.
Tot seguit es mostre l'script que generarà tot el procés d'informes mensuals i anuals:
#!/bin/sh
#
# @(#) Macrobit Software, SL
# Copyright (C) 1998 by Jordi Sanfeliu <admin@fibranet.com>
#
# Sintaxi: analogvirtual {mensual|anual}
#
#
# Aquest script genera el fitxer d'estadistiques (mensual o anual) per cadascun
# dels dominis virtuals que te el servidor. Seguidament, envia aquest fitxer per
# email a l'administrador de cada domini virtual.
#
DIRVIRT="/var/analog/"
DIROUTS="/var/analog/outs/"
MODE=
# Comprova si el parametre donat es "mensual" o "anual"
if [ $# != 1 ] ; then
exit 1
elif [ $1 = "mensual" ] ; then
MODE="m"
elif [ $1 = "anual" ] ; then
MODE="a"
fi
# Genera els fitxers ASCII d'estadistiques de cada domini virtual
for DOMINIVIRTUAL in `ls ${DIRVIRT}*-${MODE}.cfg`
do
/usr/bin/analog +g${DOMINIVIRTUAL} 2>/dev/null
done
# Prepara els fitxers d'estadistiques escapçant les 2 darreres linies que fan
# referencia al programa que les ha generat (analog). Seguidament, envia
# aquests fitxers generats per email a cada administrador de domini virtual.
#
# Cadascun d'aquests fitxers porta com a nom el domini virtual sencer, es a dir,
# "dominivirtual.com" d'aquesta manera ja tenim la part del host a punt per
# l'email. S'estableix que cada domini virtual te com a nom d'usuari un acronim
# del domini virtual de segon nivell, es a dir, "dominivirtual". Aixi doncs,
# l'email quedaria "dominivirtual@dominivirtual.com".
for FITXER in `ls ${DIROUTS}`
do
NUMLIN=`cat ${DIROUTS}${FITXER} | wc -l`
ADMIN=`echo ${FITXER} | sed s'/[.].*//'`
head -`expr ${NUMLIN} - 2` ${DIROUTS}${FITXER} | mail -s
"Estadístiques mensuals d'accessos a la seva Web" ${ADMIN}@${FITXER}
done