=================== SquidAnalyzer HOWTO (c) Nicolas Kovacs =================== Dernière révision : 14 mai 2015 Ce HOWTO décrit l'installation de SquidAnalyzer sur un serveur Slackware. Généralités et prérequis ------------------------ SquidAnalyzer est un outil de statistiques extrêmement pratique qui permet d'analyser en un coup d'oeil l'ensemble du trafic HTTP d'un réseau. On a donc facilement accès à des informations comme les URLs visitées, les sites les plus populaires, les sites et/ou les utilisateurs les plus "gourmands", et autres choses encore. SquidAnalyzer utilise les fichiers logs du serveur proxy Squid, qui doit donc être configuré correctement. Voir le Squid-HOWTO correspondant. Les résultats de SquidAnalyzer sont disponibles sous forme de pages HTML assez joliment présentées, avec des tableaux et des graphismes. Il faut donc disposer d'un serveur Web fonctionnel sur la machine. Installation ------------ SquidAnalyzer est disponible sur SlackBuilds.org. Le fichier SlackBuild par défaut propose l'emplacement '/var/www/squidreport' pour les pages HTML générées par SquidAnalyzer, accessibles à l'adresse suivante : * http:///squidreport. --8<---------- squidanalyzer.SlackBuild -------------------------------------- ... perl Makefile.PL INSTALLDIRS=vendor \ LOGFILE=/var/log/squid/access.log \ BINDIR=/usr/bin \ CONFDIR=/etc/squidanalyzer \ HTMLDIR=/var/www/squidreport \ --> pages HTML générées BASEURL=/squidreport \ --> sous-répertoire MANDIR=/usr/man/man3 \ DOCDIR=/usr/doc/$PRGNAM-$VERSION \ DESTDIR=$PKG make make install DESTDIR=$PKG ... --8<-------------------------------------------------------------------------- Étant donné que le serveur héberge déjà d'autres applications Web locales, on va opter pour la création d'un hôte virtuel avec Apache. Les pages HTML générées devront se situer dans une arborescence conforme aux hôtes virtuels existants, par exemple : --8<---------- squidanalyzer.SlackBuild -------------------------------------- ... perl Makefile.PL INSTALLDIRS=vendor \ LOGFILE=/var/log/squid/access.log \ BINDIR=/usr/bin \ CONFDIR=/etc/squidanalyzer \ HTMLDIR=/var/www/vhosts/squidreport/htdocs \ --> pages HTML générées BASEURL=/ \ --> racine de l'hôte virtuel MANDIR=/usr/man/man3 \ DOCDIR=/usr/doc/$PRGNAM-$VERSION \ DESTDIR=$PKG make make install DESTDIR=$PKG ... --8<-------------------------------------------------------------------------- Construire et installer le paquet. Configuration de l'hôte virtuel ------------------------------- Dans l'exemple, SquidAnalyzer est installé sur le serveur 'nestor.microlinux.lan'. Comme nous l'avons vu, les pages HTML générées par SquidAnalyzer se situent dans '/var/www/vhosts/squidreport/htdocs', et elles doivent être accessibles à l'adresse http://squidreport.nestor. --8<---------- /etc/httpd/extra/httpd-vhosts.conf ---------------------------- ServerAdmin info@microlinux DocumentRoot "/srv/httpd/vhosts/squidreport/htdocs" ServerName squidreport.nestor.microlinux.lan ServerAlias squidreport.nestor ErrorLog "/var/log/httpd/squidreport-error_log" CustomLog "/var/log/httpd/squidreport-access_log" common --8<-------------------------------------------------------------------------- La mise en place des hôtes virtuels est traitée en détail dans le Apache-HOWTO. Configuration de SquidAnalyzer ------------------------------ SquidAnalyzer se configure par le biais du fichier de configuration '/etc/squidanalyzer/squidanalyzer.conf', que l'on adaptera à nos besoins. La configuration par défaut est déjà raisonnablement fonctionnelle, et il suffira de modifier quelques directives : --8<---------- /etc/squidanalyzer/squidanalyzer.conf ------------------------- Output /var/www/vhosts/squidreport/htdocs WebUrl / LogFile /var/log/squid/access.log UseClientDNSName 1 --> passer de 0 à 1 DNSLookupTimeout 0.0001 NetworkAlias /etc/squidanalyzer/network-aliases UserAlias /etc/squidanalyzer/user-aliases OrderNetwork bytes OrderUser bytes OrderUrl bytes OrderMime bytes UrlReport 1 QuietMode 1 CostPrice 0 --> passer de 0.5 à 0 Currency € TopNumber 100 Exclude /etc/squidanalyzer/excluded Lang /etc/squidanalyzer/lang/fr_FR.txt --> localisation DateFormat %y-%m-%d AnonymizeLogin 0 SiblingHit 1 TransfertUnit BYTES MinPie 2 Locale fr_FR --> localisation WriteDelay 3600 TopUrlUser 10 --8<-------------------------------------------------------------------------- Premier essai ------------- Dans sa configuration par défaut, SquidAnalyzer utilise le fichier '/var/log/squid/access.log' pour générer les statistiques. Il faut donc que l'on ait quelque chose à se mettre sous la dent. Les pages en elles-mêmes sont générées par le script Perl 'squid-analyzer' : # which squid-analyzer /usr/bin/squid-analyzer Lancer le script : # squid-analyzer Vérifier si le rapport a été généré correctement : /var/www/vhosts/squidreport/htdocs/ |-- 2014 | |-- 10 | | |-- 30 | | | |-- domain.html | | | |-- index.html | | | |-- mime_type.html | | | |-- network.html | | | |-- networks | | | | `-- 192.168.2.0 | | | | `-- 192.168.2.0.html | | | |-- stat_code.dat | | | |-- stat_mime_type.dat | | | |-- stat_netuser.dat | | | |-- stat_network.dat | | | |-- stat_user.dat | | | |-- stat_user_url.dat | | | |-- url.html | | | |-- user.html ......................... Afficher les pages dans un navigateur Web. Sur la page d'accueil, cliquer sur "Stats ", puis sur les infos que l'on souhaite afficher : * Réseaux * Utilisateurs * Top URLs * Top domaines * etc. Définition d'une tâche automatique ---------------------------------- À partir de là, on peut définir une tâche automatique (cronjob) pour la génération des rapports. Si l'on souhaite produire un rapport quotidien, on peut créer un fichier '/etc/cron.daily/squid-analyzer et l'éditer comme ceci : --8<---------- /etc/cron.daily/squid-analyzer -------------------------------- #!/bin/sh /usr/bin/squid-analyzer --8<-------------------------------------------------------------------------- Rendre ce fichier exécutable : # chmod +x /etc/cron.daily/squid-analyzer Éventuellement, modifier l'heure d'exécution des cronjobs quotidiens : # crontab -e ... # Run daily cron jobs at 11:40 every day: 40 11 * * * /usr/bin/run-parts /etc/cron.daily 1> /dev/null ------------------------------------------------------------------------------ # vim: syntax=txt