Awstats Planification Génération
Une fois Awstats installée, il est utile de planifier la génération des rapports périodiquement pour éviter de le faire manuellement. La génération est déjà planifié lors de la rotation des logs de Apache.
Deux planifications sont à prévoir:
- L'analyse des logs.
- La génération des pages HTML statiques.
Des exemples de configurations sont décrites sur la documentation Ubuntu: http://doc.ubuntu-fr.org/awstats
Votre avis
Current user rating: 80/100 (1 votes)
|
|
Analyse des logs
La commande /usr/lib/cgi-bin/awstats.pl -config=www.jouvinio.net -update
doit être exécutée périodiquement avec l'outil Crontab. L'exemple suivant, placé dans le fichier /etc/crontab
, permet d'exécuter la mise à jour toutes les demies heures.
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
*/30 * * * * www-data /usr/lib/cgi-bin/awstats.pl -config=www.jouvinio.net -update > /dev/null
#
Pages HTML statiques
De la même manière, la génération des pages statiques, via l'outil awstats_buildstaticpages.pl
peut être planifiée.
Installation initiale Ubuntu
L'installation de Awstats sous Ubuntu apporte déjà toute les fonctionnalités de planification souhaitées. Un fichier awstats
est créé dans le répertoire /etc/cron.d
, avec le contenu suivant:
*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh
# Generate static reports:
10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh
Ce qui entraîne la planification suivante:
- Mise à jour des statistiques toutes les dix minutes.
- Génération des pages statiques tous les jours à 3h10.
#!/bin/sh
##
## update.sh, written by Sergey B Kirpichev <skirpichev@gmail.com>
##
## Update AWStats data for all configs, awstats.*.conf (Debian specific)
##
set -e
DEFAULT=/etc/default/awstats
AWSTATS=/usr/lib/cgi-bin/awstats.pl
ERRFILE=`mktemp --tmpdir awstats.XXXXXXXXXX`
trap 'rm -f $ERRFILE' INT QUIT TERM EXIT
[ -f $AWSTATS ] || exit 1
# Set defaults.
AWSTATS_NICE=10
[ ! -r "$DEFAULT" ] || . "$DEFAULT"
cd /etc/awstats
for c in `/bin/ls -1 awstats.*.conf 2>/dev/null | \
/bin/sed 's/^awstats\.\(.*\)\.conf/\1/'` \
`[ -f /etc/awstats/awstats.conf ] && echo awstats`
do
if ! nice -n $AWSTATS_NICE $AWSTATS \
-config=$c \
-update >$ERRFILE 2>&1
then
cat $ERRFILE >&2 # an error occurred
fi
done
Ce script permet donc de parcourir l'ensemble des fichiers awstats.*.conf
et awstats.conf
dans le répertoire /etc/awstats
, et d'exécuter le script awstats.pl
sur chacun d'entre eux.
Attention, dans le cadre de cette installation, le script émet l'erreur suivante:
#sudo /usr/share/awstats/tools/update.sh Error: SiteDomain parameter not defined in your config/domain file. You must edit it for using this version of AWStats. Setup ('/etc/awstats/awstats.conf' file, web server or permissions) may be wrong. Check config file, permissions and AWStats documentation (in 'docs' directory).
En effet, les configurations n'ont pas été placées dans le fichier /etc/awstats/awstats.conf
. Afin que le script fonctionne correctement, ce fichier est renommé.
#sudo mv /etc/awstats/awstats.conf /etc/awstats/awstats.conf.ori
De plus, le script fonctionne parfaitement en root, mais pas avec le compte www-data
comme cela est spécifié dans la configuration Crontab.
#su - www-data -c /usr/share/awstats/tools/update.sh Create/Update database for config "/etc/awstats/awstats.www.jouvinio.net.conf" by AWStats version 7.0 (build 1.971) From data in log file "/var/log/apache2/access.log"... Error: Couldn't open server log file "/var/log/apache2/access.log" : Permission non accordée Setup ('/etc/awstats/awstats.www.jouvinio.net.conf' file, web server or permissions) may be wrong. Check config file, permissions and AWStats documentation (in 'docs' directory).
En effet, seul le compte root
peut accéder aux log de Apache pour l'installation par défaut sur Ubuntu. Ce qui fait que le compte www-data
ne peut les lire, et donc produire les statistiques. L'opération la plus simple consiste à modifier la planification ainsi:
#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh
*/10 * * * * root [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh
# Generate static reports:
10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh
Il faut s'assurer que les scripts sont bien protégés en modification, pour ne pas permettre la modification de l'exécution. L'installation prend bien en compte cette vérification, car seul le compte root
peut modifier les différents fichiers:
#ll /usr/share/awstats/tools total 68 drwxr-xr-x 2 root root 4096 2012-03-05 00:07 ./ drwxr-xr-x 7 root root 4096 2012-03-01 20:11 ../ -rwxr-xr-x 1 root root 19591 2011-04-30 16:30 awstats_buildstaticpages.pl* -rwxr-xr-x 1 root root 1166 2012-03-05 00:01 buildstatic.sh* -rwxr-xr-x 1 root root 32020 2011-04-30 16:30 logresolvemerge.pl* -rwxr-xr-x 1 root root 742 2011-04-06 01:32 update.sh* #ll /usr/lib/cgi-bin/ total 720 drwxr-xr-x 2 root root 4096 2012-03-01 20:11 ./ drwxr-xr-x 145 root root 69632 2012-03-03 17:54 ../ -rwxr-xr-x 1 root root 658027 2011-04-30 16:30 awstats.pl*
Lors de l'installation du plugin rawlog, le même style d'erreur d'accès a été constaté. Il était impossible de parcourir les fichier de log sur une installation standard. Or une modification a été réalisée afin que le compte www-data
puisse accéder aux log. Donc, la modification réalisée sur la planification n'est plus nécessaire dans ce cas.
La configuration de la Crontab est donc restaurée.
*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh
# Generate static reports:
10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh
A ne pas oublier de modifier à nouveau le propriétaires des fichiers déjà générés.
#sudo chown www-data:www-data /var/lib/awstats/* #sudo chmod 664 /var/lib/awstats/*
#!/bin/sh
##
## buildstatic.sh, written by Sergey B Kirpichev <skirpichev@gmail.com>
##
## Build all static html reports from AWStats data (Debian specific)
##
set -e
DEFAULT=/etc/default/awstats
AWSTATS=/usr/lib/cgi-bin/awstats.pl
BUILDSTATICPAGES=/usr/share/awstats/tools/awstats_buildstaticpages.pl
ERRFILE=`mktemp --tmpdir awstats.XXXXXXXXXX`
YEAR=`date +%Y`
MONTH=`date +%m`
trap 'rm -f $ERRFILE' INT QUIT TERM EXIT
[ -f $AWSTATS -a -f $BUILDSTATICPAGES ] || exit 1
# Set default
AWSTATS_NICE=10
AWSTATS_ENABLE_BUILDSTATICPAGES="yes"
AWSTATS_LANG="en"
[ ! -r "$DEFAULT" ] || . "$DEFAULT"
[ "$AWSTATS_ENABLE_BUILDSTATICPAGES" = "yes" ] || exit 0
cd /etc/awstats
for c in `/bin/ls -1 awstats.*.conf 2>/dev/null | \
/bin/sed 's/^awstats\.\(.*\)\.conf/\1/'` \
`[ -f /etc/awstats/awstats.conf ] && echo awstats`
do
mkdir -p /var/cache/awstats/$c/$YEAR/$MONTH/
if ! nice -n $AWSTATS_NICE $BUILDSTATICPAGES \
-config=$c \
-year=$YEAR \
-month=$MONTH \
-lang=$AWSTATS_LANG \
-staticlinksext=${AWSTATS_LANG}.html \
-dir=/var/cache/awstats/$c/$YEAR/$MONTH/ >$ERRFILE 2>&1
then
cat $ERRFILE >&2 # an error occurred
fi
done
De la même façon, ce script parcours les fichiers awstats.*.conf
et awstats.conf
afin d'exécuter le script awstats_buildstaticpages.pl
.