viernes, febrero 01, 2008

AWStats

AWStats (http://awstats.sourceforge.net/) es un sistema de procesamiento de logs para web, ftp o mail, en este caso me toco implementarlo para estadisticas de web, lo primero fue actualizar los ports del FreeBSD ya que la version que tenia disponible era vulnerable a ataques de inyeccion, para esto es necesario instalar cvsup, en mi caso sin interfaz grafica, ya que realizo todo en consola por tratarse de servidores de produccion:

# cd /usr/ports/net/cvsup-without-gui
# make install clear
# cp /usr/share/examples/cvsup/ports-supfile /etc/port-supfile

En este ultimo fichero hay que elegir que ports queremos actualizar, por defecto los actualiza todos, de lo contrario debemos comentar la linea que dice "ports-all" y descomentar la linea que nos interese, en este caso "ports-www", luego:

# cvsup -h cvsup.freebsd.org /etc/ports-supfile ó cvsup2.freebsd.org, etc ver (http://www.freebsd.org/handbook/mirrors.html)

Esto actualizara los ports, una vez finalizado el proceso procedemos a instalar el awstats:

#cd /usr/ports/www/awstats
# make install clear

Es necesario al final de la instalacion crear un directorio wwwroot donde poner los archivos compartidos de la aplicacion (iconos, css, classes, etc) en mi caso cree un subdirectorio wwwroot en el directorio donde se instalo awstats (/usr/local/www/awstats) y agrege un include (por temas de orden) en el httpd.conf:

/usr/local/etc/apache2/httpd.conf:
Include /usr/local/etc/awstats/httpd.conf

/usr/local/etc/awstats/httpd.conf:
Alias /awstatsclasses "/usr/local/www/awstats/wwwroot/classes/"
Alias /awstatscss "/usr/local/www/awstats/wwwroot/css/"
Alias /awstatsicons "/usr/local/www/awstats/wwwroot/icons/"
ScriptAlias /awstats/ "/usr/local/www/awstats/wwwroot/cgi-bin/"Options None

<Directory "/usr/local/www/awstats/wwwroot/">
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Es necesario crear un directorio de configuracion para awstats, en mi caso /usr/local/etc/awstats, dentro de este archivo ademas de poner el anexo de configuracion para apache, se deben almacenar los archivos de configuracion para procesar logs, uno por log que se desee procesar, es decir si nuestro servidor web aloja cuatro sitios diferentes es necesario crear cuatro archivos de configuracion uno por sitio (awstats.sitio.dom.conf) tambien es posible ejecutar un script dentro de la carpeta tools llamado awstats_configure.pl para generar un primer archivo de configuracion para el procesamiento de nuestros logs, este escript esta bastante auto documentado, por lo que no entrare en profundidad en ese tema, a continuacion dejo un ejemplo de archivo de configuracion:

awstats.sitio.dom.conf:

LogFile="/var/log/access.log"
LogType=W
LogFormat=1
LogSeparator=" "
SiteDomain="%%site%%"
HostAliases="%%aliases%%"
DNSLookup=2
DirData="/var/log/awstats/"
DirCgi="/awstats"
DirIcons="/awstatsicons"
AllowToUpdateStatsFromBrowser=0
AllowFullYearView=1
EnableLockForUpdate=1
DNSStaticCacheFile="dnscache.txt"
DNSLastUpdateCacheFile="dnscachelastupdate.txt"
SkipDNSLookupFor=""
AllowAccessFromWebToAuthenticatedUsersOnly=0
AllowAccessFromWebToFollowingAuthenticatedUsers=""
AllowAccessFromWebToFollowingIPAddresses=""
CreateDirDataIfNotExists=0
BuildHistoryFormat=text
BuildReportFormat=html
SaveDatabaseFilesWithPermissionsForEveryone=0
PurgeLogFile=0
ArchiveLogRecords=0
KeepBackupOfHistoricFiles=1
DefaultFile="index.html"
SkipHosts="127.0.0.1
SkipUserAgents=""
SkipFiles=""
SkipReferrersBlackList=""
OnlyHosts=""
OnlyUserAgents=""
OnlyFiles=""
NotPageList="css js class gif jpg jpeg png bmp ico swf"
ValidHTTPCodes="200 304"
ValidSMTPCodes="1 250"
AuthenticatedUsersNotCaseSensitive=0
URLNotCaseSensitive=0
URLWithAnchor=0
URLQuerySeparators="?;"
URLWithQuery=0
URLWithQueryWithOnlyFollowingParameters=""
URLWithQueryWithoutFollowingParameters=""
URLReferrerWithQuery=0
WarningMessages=1
ErrorMessages=""
DebugMessages=0
NbOfLinesForCorruptedLog=50
WrapperScript=""
DecodeUA=0
MiscTrackerUrl="/js/awstats_misc_tracker.js"
LevelForBrowsersDetection=2 # 0 disables Browsers detection.
# 2 reduces AWStats speed by 2%
# allphones reduces AWStats speed by 5%
LevelForOSDetection=2 # 0 disables OS detection.
# 2 reduces AWStats speed by 3%
LevelForRefererAnalyze=2 # 0 disables Origin detection.
# 2 reduces AWStats speed by 14%
LevelForRobotsDetection=2 # 0 disables Robots detection.
# 2 reduces AWStats speed by 2.5%
LevelForSearchEnginesDetection=2 # 0 disables Search engines detection.
# 2 reduces AWStats speed by 9%
LevelForKeywordsDetection=2 # 0 disables Keyphrases/Keywords detection.
# 2 reduces AWStats speed by 1%
LevelForFileTypesDetection=2 # 0 disables File types detection.
# 2 reduces AWStats speed by 1%
LevelForWormsDetection=0 # 0 disables Worms detection.
# 2 reduces AWStats speed by 15%
UseFramesWhenCGI=1
DetailedReportsOnNewWindows=1
Expires=3600
MaxRowsInHTMLOutput=1000
Lang="auto"
DirLang="./lang"
ShowMenu=1
ShowSummary=UVPHB
ShowMonthStats=UVPHB
ShowDaysOfMonthStats=VPHB
ShowDaysOfWeekStats=PHB
ShowHoursStats=PHB
ShowDomainsStats=PHB
ShowHostsStats=PHBL
ShowAuthenticatedUsers=0
ShowRobotsStats=HBL
ShowWormsStats=0
ShowEMailSenders=0
ShowEMailReceivers=0
ShowSessionsStats=1
ShowPagesStats=PBEX
ShowFileTypesStats=HB
ShowFileSizesStats=0
ShowOSStats=1
ShowBrowsersStats=1
ShowScreenSizeStats=0
ShowOriginStats=PH
ShowKeyphrasesStats=1
ShowKeywordsStats=1
ShowMiscStats=a
ShowHTTPErrorsStats=1
ShowSMTPErrorsStats=0
ShowClusterStats=0
AddDataArrayMonthStats=1
AddDataArrayShowDaysOfMonthStats=1
AddDataArrayShowDaysOfWeekStats=1
AddDataArrayShowHoursStats=1
IncludeInternalLinksInOriginSection=0
MaxNbOfDomain = 10
MinHitDomain = 1
MaxNbOfHostsShown = 10
MinHitHost = 1
MaxNbOfLoginShown = 10
MinHitLogin = 1
MaxNbOfRobotShown = 10
MinHitRobot = 1
MaxNbOfPageShown = 10
MinHitFile = 1
MaxNbOfOsShown = 10
MinHitOs = 1
MaxNbOfBrowsersShown = 10
MinHitBrowser = 1
MaxNbOfScreenSizesShown = 5
MinHitScreenSize = 1
MaxNbOfWindowSizesShown = 5
MinHitWindowSize = 1
MaxNbOfRefererShown = 10
MinHitRefer = 1
MaxNbOfKeyphrasesShown = 10
MinHitKeyphrase = 1
MaxNbOfKeywordsShown = 10
MinHitKeyword = 1
MaxNbOfEMailsShown = 20
MinHitEMail = 1
FirstDayOfWeek=0
ShowFlagLinks=""
ShowLinksOnUrl=1
UseHTTPSLinkForUrl=""
MaxLengthOfShownURL=64
HTMLHeadSection=""
HTMLEndSection=""
Logo="awstats_logo6.png"
LogoLink="http://awstats.sourceforge.net"
BarWidth = 260
BarHeight = 90
StyleSheet=""
color_Background="FFFFFF" # Background color for main page (Default = "FFFFFF")
color_TableBGTitle="CCCCDD" # Background color for table title (Default = "CCCCDD")
color_TableTitle="000000" # Table title font color (Default = "000000")
color_TableBG="CCCCDD" # Background color for table (Default ="CCCCDD")
color_TableRowTitle="FFFFFF" # Table row title font color (Default = "FFFFFF")
color_TableBGRowTitle="ECECEC" # Background color for row title (Default = "ECECEC")
color_TableBorder="ECECEC" # Table border color (Default = "ECECEC")
color_text="000000" # Color of text (Default = "000000")
color_textpercent="606060" # Color of text for percent values (Default = "606060")
color_titletext="000000" # Color of text title within colored Title Rows (Default = "000000")
color_weekend="EAEAEA" # Color for week-end days (Default = "EAEAEA")
color_link="0011BB" # Color of HTML links (Default = "0011BB")
color_hover="605040" # Color of HTML on-mouseover links (Default = "605040")
color_u="FFAA66" # Background color for number of unique visitors (Default = "FFAA66")
color_v="F4F090" # Background color for number of visites (Default = "F4F090")
color_p="4477DD" # Background color for number of pages (Default = "4477DD")
color_h="66DDEE" # Background color for number of hits (Default = "66DDEE")
color_k="2EA495" # Background color for number of bytes (Default = "2EA495")
color_s="8888DD" # Background color for number of search (Default = "8888DD")
color_e="CEC2E8" # Background color for number of entry pages (Default = "CEC2E8")
color_x="C1B2E2" # Background color for number of exit pages (Default = "C1B2E2")
ExtraTrackedRowsLimit=500


No es mi intencion documentar lo ya documentado por lo que no me referire a este archivo de configuracion, para detalles ver AWStats config.

Una vez realizada la configuracion de cada sitio, basta con ejecutar el siguiente comando en /usr/local/awstats/wwwroot/cgi-bin/

#perl awstats.pl -config=sitio.dom -update

Lo que buscara automaticamente en /usr/local/etc/awststas el archivo awstats.sitio.dom.conf y realizara un update de las estadisticas de sitio.dom, esta actualizacion se agrega a un archivo de estadisticas mensual que maneja awstats, y parte desde el ultimo registro analizado, es decir, no vuelve a revisar el access.log cada vez que se ejecuta el comando, para ver las estadisticas de cada sitio es necesario ir con el explorador a esta URL: http://sitio.dom/awstats/awstats.pl?config=sitio.dom

Tambien es posible generar paginas estaticas para cada dominio con el comando:

#perl awstats_buildstaticpages.pl -config=sitio.dom -update -lang=es -awstatsprog=/usr/local/www/awstats/cgi-bin/awstats.pl -dir=/directorio/donde_guardar/las_paginas_estaticas/

Para finalizar es necesario modificar el cron para que ejecute estas acciones de forma automatica cada cierto tiempo dependiendo de los requerimientos del usuario final, en este caso un compañero de trabajo programo un script en perl que revisa los directorios de logs para saber cuantos sitios se encuentran activos y genera automaticamente las configuraciones para ellos y luego ejecuta el update de estadisticas una vez al dia, no puedo revelar dicho script ya que no lo hice yo pero no es tan dificil de realizar, finalmente el cron quedo de esta forma.

33 01 * * * /usr/bin/perl /sites/conf/awstats_master.pl

Es decir cada dia a las 1:33am ejecuta el script en cuestion.

Saludos.

2 comentarios:

Anónimo dijo...

yo tengo un servidor con centos y deseo actualizar mi version 6.7 a 6.8 ¿como se hace esto?

Claudio Castro dijo...

No he realizado dicho proceso ya que lo unico que me motivaria a hacerlo seria un advisory de seguridad, el unico que he visto ultimamente respecto a awstats, tiene relacion con el uso de paginas dinamicas para mostrar las estadisticas, el cual no es mi caso :D

De todas formas segun la documentacion oficial basta con sobrescribir el antiguo awstats descomprimiendo el nuevo tar.gz "encima", para mas info:

http://awstats.sourceforge.net/docs/awstats_upgrade.html

Espero te sirva..

Saludos