AWStats: analitzant les estadístiques

De Wikijoan
Dreceres ràpides: navegació, cerca

Contingut

Instal.lar i configurar AWStats (des de les fonts, curs 14-15)

NOTA. Si vols instal.lar awstats amb el paquet awstats, vés a l'apartat següent, en principi també ha de funcionar. Tingues present però que els directoris d'instal.lació seran diferents.

Anem a instal.lar una projecte web per analitzar les estadístiques del nostre lloc www.iaw.org. A diferència de molts projectes web que veurem al llarg del curs, que estan basats en PHP+MySQL, el projecte AWStats està basat en Perl. Això és per motius històrics, doncs el projecte ja té una colla d'anys (2004). Però didàcticament és interessant per veure que en e servidor Apache podem tenir scripts perl (i d'altres) per a ser executats, i que la seva execució genera pàgines html que són servides als clients (Firefox, Chrome,...).

Anem a la pàgina oficial:

mirem els característiques, captures de pantalla,... i anem a Downloads. Aquí podem veure com el projecte es remunta a 2004, veiem com durant tot aquest temps el projecte ha estat actiu, i que la última versió per descarregar és molt recent, de l'octubre del 2014, que significa que el projecte és actiu. Això és important per nosaltres, només hem de confiar en projectes actius i dels quals podem rebre suport. Així doncs, descarreguem el fitxer awstats-7.3.tar.gz en una carpeta personal. Mirem el document README.txt, i d'aquí veiem que les instruccions d'instal.lació estan en la carpeta docs/, en format html.

Llegim la documentació.

$ sudo mkdir /usr/local/awstats
$ sudo cp -R awstats-7.3/* /usr/local/awstats/
$ ls /usr/local/awstats
docs  README.TXT  tools  wwwroot

Hem de saber on està el nostre fitxer de configuració principal de l'Apache, doncs ens el demanaran:

/etc/apache2/httpd.conf

Comencem la configuració:

$ cd /usr/local/awstats/tools/
$ sudo perl awstats_configure.pl 
...
Update model config file '/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf'
  File awstats.model.conf updated.

Example: www.mysite.com
Example: demo
Your web site, virtual server or profile name:
...

Hem de tenir clar que l'objectiu és registrar les estadístiques del site local www.iaw.org, que ja està configurat i en marxa. Per tant, on posa mysite ficarem:

mysite:
www.iaw.org
...

i es generarà el fitxer /etc/awstats/awstats.www.iaw.org.conf

...
-----> 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.iaw.org
Or if you have several config files and prefer having only one command:
/usr/local/awstats/tools/awstats_updateall.pl now

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

Si llegim amb deteniment veiem que configure.pl no suporta el cron. Què significa? Per què serveix el cron? Hem de tenir clar a aquestes altures que les estadístiques s'alimenten del fitxer log que hem definit per al nostre site. El script awstats.pl el que fa és llegir els logs i actualitzar la informació. Volem que aquest script s'executi de forma periòdica (cada hora o dia o setmana) i desatesa. Això ho farà el cron (veure més endavant).

Abans d'executar el script mirem amb deteniment el fitxer de configuració que s'ha generat:

$ sudo joe /etc/awstats/awstats.www.iaw.org.conf
...
LogFile="/var/log/httpd/mylog.log"

Busquem on el fitxer de configuració va a buscar els log. Hem de tenir clar quin és el fitxer de log per al nostre site www.iaw.org. El vam definir en el fitxer /etc/apache2/sites-available/www.iaw.org, i és /var/log/apache2/access_iaw.log.

CustomLog /var/log/apache2/access_iaw.log combined

Efectivament, ens assegurem que /var/log/apache2/access_iaw.log està registrant els log (actualitza www.iaw.org unes quantes vegades):

$ tail /var/log/apache2/access_iaw.log

Per tant, el fitxer de configuració /etc/awstats/awstats.www.iaw.org.conf quedarà:

 
#LogFile="/var/log/httpd/mylog.log"
LogFile="/var/log/apache2/access_iaw.log"

Dins el fitxer de configuració està definit el directori on es guardaran les dades, la base de dades:

DirData="/var/lib/awstats"

Com que aquest directori segurament no el tindràs, el crees:

$ sudo mkdir /var/lib/awstats

a dins es crearà el fitxer de les estadístiques, per ex, awstats102014.www.iaw.org.txt, que és la base de dades on es guarda la informació.

Mirem d'exeuctar el script

$ cd /usr/local/awstats/wwwroot/cgi-bin
$ sudo perl awstats.pl -update -config=www.iaw.org

Create/Update database for config "/etc/awstats/awstats.www.iaw.org.conf" by AWStats version 7.3 (build 20140126)
From data in log file "/var/log/apache2/access_iaw.log"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Jumped lines in file: 0
Parsed lines in file: 3
 Found 0 dropped records,
 Found 0 comments,
 Found 0 blank records,
 Found 0 corrupted records,
 Found 0 old records,
 Found 3 new qualified records.

Ara ja sé que s'actualitzen les estadístiques. Ara hem de montar el site web. Com que volem accedir a les estadístiques des de http://localhost/awstats, modificarem l'arxiu /etc/apache2/sites-available/default:

 
Alias /awstats-icon/ /usr/local/awstats/wwwroot/icon/
ScriptAlias /awstats/ /usr/local/awstats/wwwroot/cgi-bin/

Aquestes dues línies les posem al final de tot, just abans de </VirtualHost>.

Per no tenir problemes de permisos:

$ sudo chmod a+rwx -R /usr/local/awstats/wwwroot/

Reiniciem el servidor Apache, i ara ja podem visualitzar les estadístiques per al nostre site:

Configurar el cron

Ara que ja tenim les estadísques funcionant, hem d'actualitzar-les de forma automàtica i desatesa. Utilitzarem el cron.

#!/bin/sh
perl /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.iaw.org > /dev/null

Li donem permís d'execució i l'executem:

$ sudo chmod +x /etc/cron.daily/awstats
$ sudo /etc/cron.daily/awstats

Els scripts que estan en la carpeta /etc/cron.daily/ s'executen cada dia.

NOTA: dincs del fitxer /etc/crontab existeix la línia:

25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

que gestiona els scripts de cron.daily de forma anacrònica, és a dir, tenint en compte que la màquina pot estar apagada. Fixar-se bé que el script s'executarà com a root.

Instal.lar i configurar AWStats (sudo apt-get)

A l'Apache el log per defecte està a /var/log/apache2, i concretament access.log

$ sudo apt-get install awstats

Ha quedat instal.lat a:

$ ls /usr/lib/cgi-bin/
awstats.pl  php  php5

El scripit awstats.pl (script de Perl) és el motor de les estadístiques

i el directori d'instal.lació:

$ ls /usr/share/awstats/
icon  lang  lib  plugins

Fitxer de configuració:

$ ls /etc/awstats/awstats.conf 
/etc/awstats/awstats.conf

$ sudo cp /etc/awstats/awstats.conf /etc/awstats/awstats.localhost.conf
$ sudo joe /etc/awstats/awstats.localhost.conf
LogFile="/var/log/apache2/access.log"
LogFormat=4 -> per a Apache2
SiteDomain="localhost"
HostAliases="localhost 127.0.0.1"

Ara hem de configurar l'Apache i configurar un nou lloc per veure les estadístiques:

$ sudo joe sites-available/default
...
Alias /awstats-icon/ /usr/share/awstats/icon/
ScriptAlias /awstats/ /usr/lib/cgi-bin/
...

aquestes línies també es podrien ficar a http.conf o apache2.conf

Revisem els permisos dels logs (en principi està bé). S'ha d'actualitzar les estadístiques executant un script:

$ sudo /usr/lib/cgi-bin/awstats.pl -config=localhost -update
Create/Update database for config "/etc/awstats/awstats.localhost.conf" by AWStats version 6.9 (build 1.925)
From data in log file "/var/log/apache2/access.log"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Jumped lines in file: 0
Parsed lines in file: 34
 Found 0 dropped records,
 Found 0 corrupted records,
 Found 0 old records,
 Found 34 new qualified records.

Aquest script el podem executar amb un cron de forma automàtica i periòdica. Si volem programar-lo cada 24 fem:

$ sudo joe /etc/cron.daily/awstats

#!/bin/sh
/usr/lib/cgi-bin/awstats.pl -config=localhost -update > /dev/null

Li donem permís d'execució i l'executem:

$ sudo chmod +x /etc/cron.daily/awstats
$ /etc/cron.daily/awstats

Els scripts que estan en la carpeta /etc/cron.daily/ s'executen cada dia.

Podem comprovar que funciona:

En el cas de què trobem que les estadístiques no s'actualitzen, el millor és executar el script directament:

$ sudo /usr/lib/cgi-bin/awstats.pl -config=localhost -update

Estadístiques amb nom de domini: www.sad.org i www.iaw.org

Per simplicitat fins ara hem utilitzat localhost. A l'assignatura de IAW s'explica es pot crear localment i a nivell de LAN noms de domini d'Internet: UF1_1:_Servidors_Web._Apache._Instal.lació_i_configuració. Suposem que disposem dels dominis locals www.sad.org i www.iaw.org, definits en el fitxer /etc/hosts.

Ara volem que AWStats accedeixi a aquests dominis i ens doni estadístiques diferenciades.

El primer que farem és crear els fitxers awstats.www.sad.org.conf i awstats.www.iaw.org.conf

$ sudo cp /etc/awstats/awstats.localhost.conf /etc/awstats/awstats.www.sad.org.conf
$ sudo joe /etc/awstats/awstats.www.sad.org.conf
LogFile="/var/log/apache2/access_sad.log"
LogFormat=4 -> per a Apache2
SiteDomain="www.sad.org"
HostAliases="www.sad.org localhost 127.0.0.1"

El mateix per a www.iaw.org

Accedim als sites www.iaw.org i www.sad.org (recordem que són locals a la LAN) i podem veure com es creen i s'actualitzen els fitxers /var/log/apache2/access_sad.log i /var/log/apache2/access_iaw.log

Per actualitzar les estadístiques, executo

$ sudo /usr/lib/cgi-bin/awstats.pl -config=www.sad.org -update
$ sudo /usr/lib/cgi-bin/awstats.pl -config=www.iaw.org -update

Si vull actualitzar-les automàticament ho fico en un cron, com abans.

Ara ja puc accedir a les estadístiques dels dos sites de forma diferenciada:



creat per Joan Quintana Compte, setembre 2011

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
IES Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines