Tabla de Contenidos

Estadísticas básicas AWStats - HTTP y SMTP


Servidores Linux Ubuntu Server

Instalación de estadísticas básicas de Awstats para un sólo dominio o múltiples dominios. Nótese que para poder sacar estadísticas de múltiples dominios, cada VirtualHost debe logar en un fichero de log diferente.

     # apt-get install awstats


     ScriptAlias /awstats/ /usr/lib/cgi-bin/
     Alias /awstatsclasses /usr/share/awstats/lib
     Alias /awstats-icon /usr/share/awstats/icon
     Alias /awstatscss /usr/share/doc/awstats/examples/css
     Alias /stats /var/www/stats

     <Files awstats.pl>
             AuthName "Estadisticas awstats"
             AuthType Basic
             AuthUserFile /etc/apache2/http_passwords
             require valid-user
     </Files>

Nota: se ha indicado que las anteriores líneas de configuración se deben introducir dentro de cada VirtualHost. Esto es así si queremos mantener usuarios o AuthNames diferentes en cada Website, pero si no es así, bastaría con incluir lo siguiente dentro de cada VirtualHost:

     Include /etc/apache2/conf.d/awstats.conf


     # htpasswd -c /etc/apache2/http_passwords awstats


     # cd /etc/awstats/
     # cp awstats.conf awstats.conf.orig
     # cp awstats.conf awstats.dominio1.conf
     # cp awstats.conf awstats.dominio2.conf
     # vim awstats.dominio1.conf
     # vim awstats.dominio1.conf


     LogFile="/var/log/apache2/access.log"
     SiteDomain="dominio.com"
     DirCgi="/awstats"


     # /usr/lib/cgi-bin/awstats.pl --config=dominio1 -update
     # /usr/lib/cgi-bin/awstats.pl --config=dominio2 -update



     # Actualizar logs awstats
     0-50/10 * * * * root /usr/lib/cgi-bin/awstats.pl -config=dominio1 -update >/dev/null
     0-50/10 * * * * root /usr/lib/cgi-bin/awstats.pl -config=dominio2 -update >/dev/null
     # (etc...)


     http://www.dominio1.com/awstats/awstats.pl?config=dominio1
     http://www.dominio2.com/awstats/awstats.pl?config=dominio2

Si no se indica el parámetro ?config=dominio, aparecerán estadísticas vacías o un error de configuración de awstats, al tratar de mostrar las estadísticas "por defecto" de /etc/awstats/awstats.conf (y no de los ficheros "generales").


     # cd /var/www
     # mkdir stats
     # cat index.php
     <?php 
     header("Location: http://www.dominio.com/awstats/awstats.pl?config=dominio");
     ?>

De esta forma, el usuario puede acceder directamente a http://dominio.com/stats/, y será redirigido al CGI pidiéndole el password de acceso.




Servidores Linux RedHat

Instalación de estadísticas básicas de Awstats para un sólo dominio o múltiples dominios. Nótese que para poder sacar estadísticas de múltiples dominios, cada VirtualHost debe logar en un fichero de log diferente.


     # yum install awstats


     Alias /awstats/icon/ /var/www/awstats/icon/
     Alias /stats /var/www/stats
     ScriptAlias /awstats/ /var/www/awstats/
     <Directory /var/www/awstats/>
             DirectoryIndex awstats.pl
             Options ExecCGI
             #order deny,allow
             #deny from all
             #allow from 127.0.0.1

             AuthName "Estadisticas awstats"
             AuthType Basic
             AuthUserFile /etc/httpd/http_passwords
             require valid-user
     </Directory>

     <Files "awstats.pl">
             AuthName "Estadisticas awstats"
             AuthType Basic
             AuthUserFile /etc/apache2/http_passwords
             require valid-user
     </Files>


     Include /etc/httpd/conf.d/awstats.conf

Nota: si alguno de los VirtualHosts requiere una configuración / usuario diferente, en lugar del Include se pueden indicar directamente las directivas de Directory y Files dentro del mismo.


     # htpasswd -c /etc/httpd/http_passwords awstats


     # cd /etc/awstats/
     # cp awstats.conf awstats.conf.orig
     # cp awstats.conf awstats.dominio1.conf
     # cp awstats.conf awstats.dominio2.conf
     # vim awstats.dominio1.conf
     # vim awstats.dominio1.conf


     LogFile="/var/log/httpd/access_log"
     SiteDomain="dominio.com"
     DirCgi="/awstats"


     # /var/www/awstats/awstats.pl --config=dominio1 -update
     # /var/www/awstats/awstats.pl --config=dominio2 -update



     # Actualizar logs awstats
     0-50/10 * * * * root /var/www/awstats/awstats.pl -config=dominio1 -update >/dev/null
     0-50/10 * * * * root /var/www/awstats/awstats.pl -config=dominio2 -update >/dev/null
     # (etc...)


     http://www.dominio1.com/awstats/awstats.pl?config=dominio1
     http://www.dominio2.com/awstats/awstats.pl?config=dominio2

Si no se indica el parámetro ?config=dominio, aparecerán estadísticas vacías o un error de configuración de awstats, al tratar de mostrar las estadísticas "por defecto" de /etc/awstats/awstats.conf (y no de los ficheros "generales").


     # cd /var/www
     # mkdir stats
     # cat index.php
     <?php 
     header("Location: http://www.dominio.com/awstats/awstats.pl?config=dominio");
     ?>

De esta forma, el usuario puede acceder directamente a http://dominio.com/stats/, y será redirigido al CGI pidiéndole el password de acceso.



Estadísticas de correo con Awstats en servidores Postfix

Cómo generar estadísticas de correo en servidores Postfix mediante awstats. Las estadísticas se generan localmente y requieren de un servidor Web para ser visualizadas. Es posible modificar los scripts para que no requieran servidor Web y empaqueten las estadísticas con sus iconos en ZIPs visualizables localmente.



     # cd /etc/awstats/
     # cp awstats.conf awstats.postfix.conf


     # /etc/awstats$ diff awstats.postfix.conf awstats.conf | grep "<" | sed -e 's/\< //g'
     LogFile="perl /usr/share/doc/awstats/examples/maillogconvert.pl (partido)
     standard < /var/log/postfix/mail.log |"
     LogType=M
     LogFormat="%time2 %email %email_r %host %host_r %method %url %code %bytesd" 
     SiteDomain="mail.dominio.com"
     AllowToUpdateStatsFromBrowser=1
     LevelForBrowsersDetection=0
     LevelForOSDetection=0
     LevelForRefererAnalyze=0
     LevelForRobotsDetection=0
     LevelForWormsDetection=0
     LevelForSearchEnginesDetection=0
     LevelForFileTypesDetection=0 
     MaxRowsInHTMLOutput=2000
     Lang="es"
     ShowSummary=HB
     ShowMonthStats=HB
     ShowDaysOfMonthStats=HB
     ShowDaysOfWeekStats=HB
     ShowHoursStats=HB
     ShowDomainsStats=0
     ShowHostsStats=HBL
     ShowRobotsStats=0
     ShowEMailSenders=HBML
     ShowEMailReceivers=HBML
     ShowSessionsStats=0
     ShowPagesStats=0
     ShowFileTypesStats=0
     ShowOSStats=0
     ShowBrowsersStats=0
     ShowOriginStats=0
     ShowKeyphrasesStats=0
     ShowKeywordsStats=0
     ShowMiscStats=0
     ShowHTTPErrorsStats=0
     ShowSMTPErrorsStats=1
     MaxNbOfHostsShown = 40
     MaxNbOfEMailsShown = 100
     FirstDayOfWeek=0
     ShowLinksOnUrl=0


     # mkdir /var/www/awstats
     # mkdir /var/www/awstats/oldstats



     $ cat /usr/local/bin/genera_estadisticas_awstats.sh
     #!/bin/sh
     #
     # Crear estadisticas de awstats para postfix.

     EMAIL="postfix_stats@dominio.com"

     cd /var/www/awstats/

     DIA="`date +%u`"
     # Se rotan las estadísticas semanalmente.
     if [ "x${DIA}x" == "x7x" ];
     then
        YESTERDAY="`date -d yesterday +%F`"
        mkdir -p oldstats
        cp -f awstats.* oldstats/awstats-${YESTERDAY}.html
     fi

     # Actualizar estadisticas:
     /usr/lib/cgi-bin/awstats.pl --config=postfix -update

     # Generar estadisticas (sin paginas adicionales ni enlace a ellas):
     /usr/lib/cgi-bin/awstats.pl --config=postfix -output -staticlinks \
      | sed -n '/^$/!{s/<a href[^>]*>//g;p;}' > awstats.html

     echo "http://www.dominio.com/awstats/awstats.html" | \
       mail -s "[mail.dominio.com] Estadisticas semanales postfix (awstats)" \
       $EMAIL


     Alias /stats /var/www/awstats
     <Directory "/var/www/awstats">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        AuthType Basic
        AuthName "Acceso a estadisticas postfix"
        AuthUserFile /etc/apache2/http_passwords
        Require user awstats
     </Directory>


     # htpasswd -c /etc/apache2/http_passwords awstats


     30 5 * * 7 root /usr/local/bin/genera_estadisticas_awstats.sh > /dev/null

Esto actualiza las estadísticas diariamente. Se puede cambiar la periodicidad a "cada 30 minutos" y prescindir del email de aviso al usuario si éste ya tiene conocimiento de la URL de acceso.



Estadísticas de correo con pflogsumm en servidores Postfix

Cómo generar estadísticas de correo en servidores Postfix mediante pflogsumm. Las estadísticas se generan localmente y se envían por correo en un formato de texto puro con todos los datos relativos a los logs analizados. Estas estadísticas no sumarizan datos antiguos y se deben pasar a los logs antes de su rotación, proporcionando la información sólo del período temporal que contiene el fichero mail.log. Así, las podemos generar semanalmente o diariamente según la periodicidad de rotación de los logs.





     $ cat /usr/local/bin/estadisticas_postfix.sh
     #!/bin/sh
     #
     # Estadisticas de postfix con pflogsumm.
     #

     EMAIL="postfix_stats@dominio.com"

     SUBJECT="[mail.dominio.com]: Estadisticas semanales postfix (pflogsumm)"

     cd /var/log/postfix/
     cat mail.log | pflogsumm-1.1.1 --no_smtpd_warnings | mail -s "$SUBJECT" $EMAIL


     00 6 * * 7 root /usr/local/bin/estadisticas_postfix.sh



Generación de estadísticas anuales actualizadas estáticas

Es posible generar estadísticas estáticas con awstats, utilizando un binario directamente diseñado a tal efecto. Estas estadísticas se actualizarán regularmente, y sólo mostrarán las del año en curso. De esta forma, el usuario no accede al CGI de awstats y se le muestra una visión HTML plana que se puede guardar desde el navegador (guardando la web completa).


     # mkdir /var/www/stats


     Alias /awstatsclasses /usr/share/awstats/lib
     Alias /awstats-icon /usr/share/awstats/icon
     Alias /awstatscss /usr/share/doc/awstats/examples/css
     Alias /stats /var/www/stats
     
    <Directory "/var/www/stats">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        AuthType Basic
        AuthName "Acceso a estadisticas Web"
        AuthUserFile /etc/apache2/http_passwords
        Require user awstats
    </Directory>


     # htpasswd -c /etc/apache2/http_passwords awstats


     $ cat /usr/local/bin/genera_estadisticas_anuales.sh 
     #!/bin/sh

     YEAR="`date +%Y`"

     EMAIL="usuario@destino.com"
     AWSTATS="/usr/lib/cgi-bin/awstats.pl"
     AWSTATIC="/usr/share/doc/awstats/examples/awstats_buildstaticpages.pl"
     DESTDIR="/var/www/stats/$YEAR"
     WEB="dominio.com"
     USER="webuser"

     mkdir -p $DESTDIR
     chown $USER:$USER $DESTDIR
     cd $DESTDIR

     # Actualizar estadisticas:
     $AWSTATS --config=${WEB} -update

     $AWSTATIC -config=${WEB} -dir=$DESTDIR -awstatsprog=$AWSTATS -year=$YEAR -month=all
     rm -f index.html
     su -c "ln -sf awstats.dominio.com.html ${DESTDIR}/index.html" $USER
     chown ${USER}:${USER} *


     # Actualizar estadísticas anuales:
     0-59/10 * * * * root /usr/local/bin/genera_estadisticas_anuales.sh > /dev/null



Notas sobre versiones

Los pasos anteriormente descritos son para distribuciones Ubuntu Server 8.04 y RedHat/CentOS 4.x y 5.x. Estos pasos, así como los paths, ubicaciones de binarios, etc, pueden variar en versiones anteriores o posteriores, o si así lo determinan los mantenedores de los paquetes.



<Volver a la sección de GNU/Linux>