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.
- Instalamos el paquete de la distribución:
# apt-get install awstats
- Añadimos las siguientes líneas dentro de /etc/apache2/ en conf.d/awstats.conf (virtualhost general de la máquina) como en cada sites-enabled/web_cliente.conf (VirtualHost de las webs en cuestión):
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
- Creamos el listado de usuarios válidos que podrán acceder a las estadísticas. El require valid-user de la configuración anterior valdría para cualquier usuario de este fichero, aunque puede cambiarse en cada VirtualHost por usuarios concretos si cada web pertenece a un usuario diferente, por algo del tipo "require user awstats".
# htpasswd -c /etc/apache2/http_passwords awstats
- Copiamos el fichero de configuración para cada una de las webs y los editamos:
# 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
- Hacemos los cambios del fichero de configuración necesarios. Los parámetros más importantes son los siguientes:
LogFile="/var/log/apache2/access.log" SiteDomain="dominio.com" DirCgi="/awstats"
- Actualizamos las estadísticas de cada dominio:
# /usr/lib/cgi-bin/awstats.pl --config=dominio1 -update # /usr/lib/cgi-bin/awstats.pl --config=dominio2 -update
- Verificamos que la rotación de logs es semanal o diaria.
- Añadimos lo siguiente al /etc/crontab:
# 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...)
- Proporcionamos al usuario el username y el password de acceso, sabiendo que las URLs de cada web serán las siguientes:
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").
- Para evitar que el usuario acceda a las estadísticas vacías (/etc/awstats/awstats.conf) o para facilitar el acceso en máquinas con un sólo dominio, se crea una carpeta /stats que redirija a una de las estadísticas:
# 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.
- Verificar que con esta configuración no se puede acceder a http://dominio/cgi-bin/awstats.pl sin password.
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.
- Instalamos el paquete de la distribución. Si no existe yum (y todavía se usa up2date), instalarlo junto al repositorio de rpmforge:
# yum install awstats
- Editamos el /etc/httpd/conf/awstats.conf:
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>
- Dentro de cada VirtualHost, agregamos:
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.
- Creamos el listado de usuarios válidos que podrán acceder a las estadísticas. El require valid-user de la configuración anterior valdría para cualquier usuario de este fichero, aunque puede cambiarse en cada VirtualHost por usuarios concretos si cada web pertenece a un usuario diferente.
# htpasswd -c /etc/httpd/http_passwords awstats
- Copiamos el fichero de configuración para cada una de las webs y los editamos:
# 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
- Hacemos los cambios del fichero de configuración necesarios. Los parámetros más importantes son los siguientes:
LogFile="/var/log/httpd/access_log" SiteDomain="dominio.com" DirCgi="/awstats"
- Actualizamos las estadísticas de cada dominio:
# /var/www/awstats/awstats.pl --config=dominio1 -update # /var/www/awstats/awstats.pl --config=dominio2 -update
- Verificamos que la rotación de logs es semanal o diaria.
- Añadimos lo siguiente al /etc/crontab:
# 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...)
- Proporcionamos al usuario el username y el password de acceso, sabiendo que las URLs de cada web serán las siguientes:
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").
- Para evitar que el usuario acceda a las estadísticas vacías (/etc/awstats/awstats.conf) o para facilitar el acceso en máquinas con un sólo dominio, se crea una carpeta /stats que redirija a una de las estadísticas:
# 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.
- Instalar el paquete awstats.
- Generar un fichero de configuración para Postfix.
# cd /etc/awstats/ # cp awstats.conf awstats.postfix.conf
- Modificar el fichero de configuración para que analice logs de correo:
# /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
- Crear /var/www/awstats/ y /var/www/awstats/oldstats/ en distribuciones Debian, o /var/www/stats en RedHats (ya que RedHat instala awstats en /var/www/awstats):
# mkdir /var/www/awstats # mkdir /var/www/awstats/oldstats
- Crear una redirección postfix_stats@dominio.com que llegue a los usuarios destino de las estadísticas.
- Crear el siguiente script genera_estadisticas_awstats.sh, para generar estadísticas estáticas en el servidor Web local. El enlace a las mismas se enviará por correo. El path de ejecución de awstats en este script es /usr/lib/cgi-bin (distribuciones Debian y Ubuntu), en el caso de RedHat se debe cambiar por /var/www/awstats/, y el directorio destino de las estadísticas por /var/www/stats.
$ 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
- Se añade la siguiente configuración a Apache, dentro del VirtualHost que deba servir las estadísticas:
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>
- Se crea el fichero de passwords http_passwords con el usuario "awstats".
# htpasswd -c /etc/apache2/http_passwords awstats
- Se añade la generación de estadísticas al Cron:
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.
- Instalar el paquete pflogsumm última versión, o descargar la última versión disponible de la web del autor e instalarlo en /usr/local/bin. En el caso de Debian, la versión de paquete es la 1.0 y el tar.gz contiene la 1.1. El programa es un script en perl por lo que es "seguro" y "mantenible" instalarlo desde tar.gz.
- Configurar en postfix una rotación de logs semanal o diaria, según cada cuánto se quieran recibir las estadísticas.
- Crear una redirección postfix_stats@dominio.com que llegue a los usuarios destino de las estadísticas.
- Crear el siguiente script de generación de estadísticas:
$ 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
- Ejecutar la generación de estadísticas en el cron:
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).
- Creamos en el sistema el siguiente directorio:
# mkdir /var/www/stats
- Lo protegemos en Apache al igual que en los casos anteriores:
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>
- Creamos el usuario de autenticación:
# htpasswd -c /etc/apache2/http_passwords awstats
- Creamos el siguiente script de estadísticas:
$ 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} *
- Introducir las siguientes líneas en /etc/crontab:
# 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.