SquidAnalyzer est un outil de statistiques extrêmement pratique qui permet d’analyser en un coup d’oeil l’ensemble du trafic web 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. Pour les détails, voir les deux articles qui expliquent en détail la configuration de Squid comme proxy cache HTTP transparent et la gestion des connexions HTTPS.
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.
- Téléchargement des sources
- Construction et installation
- Configuration de l’hôte virtuel
- Configuration de SquidAnalyzer
- Premier essai
- Définition d’une tâche automatique
Téléchargement des sources
Il existe certes des paquets binaires dans des dépôts binaires confidentiels éparpillés sur le web. Étant donné que la construction de l’application depuis les sources officielles ne relève pas de la magie noire, on va préférer cette option.
Le téléchargement des sources de SquidAnalyzer peut se faire en ligne de commande depuis le serveur.
# cd # links http://squidanalyzer.darold.net
Suivre le lien Download > SourceForge Download. Sur la page de SourceForge, repérer le lien Download un peu plus bas sur la page, cliquer dessus, puis recliquer sur le lien direct qui s’affiche. Télécharger le fichier squidanalyzer-6.6.tar.gz
.
Construction et installation
Décompresser l’archive des sources et aller dans le répertoire nouvellement créé.
# tar xvzf squidanalyzer.tar.gz # cd squidanalyzer-6.6
L’archive fournit un fichier squidanalyzer.spec
dans le répertoire packaging/RPM
. Malheureusement, la construction d’un paquet RPM en partant de ce fichier échoue. En revanche, il peut nous servir pour récupérer les dépendances de construction du paquet, grâce à la commande yum-builddep
fournie par le paquet yum-utils
.
# cd packaging/RPM # yum-builddep squidanalyzer.spec
Cette dernière commande récupère l’intégralité des paquets nécessaires pour la construction de SquidAnalyzer. Ils sont tous fournis par les dépôts officiels de CentOS, notamment une panoplie de modules Perl.
Une fois qu’on a installé toutes les dépendances, on vérifie l’emplacement des fichiers de l’application, qui est défini dans le fichier Makefile.PL
.
# Default install path
my $LOGFILE = $ENV{LOGFILE} || $default_log;
my $BINDIR = $ENV{BINDIR} || '/usr/local/bin';
my $CONFDIR = $ENV{CONFDIR} || '/etc/squidanalyzer';
my $ETCDIR = $ENV{ETCDIR} || $CONFDIR;
my $HTMLDIR = $ENV{HTMLDIR} || '/var/www/squidanalyzer';
my $BASEURL = $ENV{BASEURL} || '/squidreport';
my $DOCDIR = $ENV{DOCDIR} || '';
my $MANDIR = $ENV{MANDIR} || '/usr/local/man/man3';
my $DESTDIR = $ENV{DESTDIR} || '';
$ENV{INSTALLDIRS} ||= 'site';
On va garder cette configuration par défaut, quitte à rectifier le tir plus loin en éditant le fichier de configuration. À présent, on peut lancer la construction et l’installation.
# perl Makefile.PL # make # make install
Configuration de l’hôte virtuel
Notre proxy Squid est installé sur la machine amandine.sandbox.lan
. On va mettre en place un hôte virtuel squidreport.amandine.sandbox.lan
qui pointe vers le répertoire /var/www/squidanalyzer
.
Le proxy se charge également de la configuration DNS locale avec Dnsmasq. Il suffit donc de créer une nouvelle entrée dans /etc/hosts
et de redémarrer Dnsmasq pour propager les informations du nouvel hôte vers toutes les machines du réseau.
# /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.3.1 amandine.sandbox.lan amandine
192.168.3.1 squidreport.amandine.sandbox.lan squidreport.amandine
Ensuite, je crée un fichier /etc/httpd/conf.d/10-squidreport.amandine.conf
qui contient la configuration de l’hôte virtuel. Pour plus de détails, on consultera l’article détaillé sur Apache.
# /etc/httpd/conf.d/10-squidreport.amandine.conf
#
# http://squidreport.amandine.sandbox.lan
<VirtualHost *:80>
ServerAdmin info@microlinux.fr
DocumentRoot "/var/www/squidanalyzer"
<Directory "/var/www/squidanalyzer">
Options -Indexes +FollowSymlinks +MultiViews
AllowOverride None
</Directory>
ServerName squidreport.amandine.sandbox.lan
ServerAlias squidreport.amandine
ErrorLog logs/squidreport.amandine-error_log
CustomLog logs/squidreport.amandine-access_log common
</VirtualHost>
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.
# /etc/squidanalyzer/squidanalyzer.conf
Output /var/www/squidanalyzer
WebUrl /
LogFile /var/log/squid/access.log
UseClientDNSName 0
DNSLookupTimeout 0.0001
...
Lang /etc/squidanalyzer/lang/fr_FR.txt
...
TransfertUnit MB
...
Locale fr_FR
...
Premier essai
Dans la configuration actuelle, SquidAnalyzer utilise le fichier /var/log/squid/access.log
pour générer les rapports. Il faut donc que l’on ait quelque chose à se mettre sous la dent, autrement dit, vérifiez si le fichier n’est pas vide. Les pages du rapport en elles-mêmes sont générées par le script Perl squid-analyzer
.
# which squid-analyzer /usr/local/bin/squid-analyzer
Lancer le script, qui peut mouliner un certain temps en fonction de la taille du fichier /var/log/squid/access.log
et de la puissance de calcul du serveur.
# squid-analyzer
Vérifier si le rapport a été généré correctement.
# tree /var/www/squidanalyzer/
/var/www/squidanalyzer/
|-- 2018
| |-- 03
| | |-- 08
| | | |-- denied.html
| | | |-- domain.html
| | | |-- index.html
| | | |-- mime_type.html
| | | |-- network.html
| | | |-- networks
| | | | `-- 192.168.3.2
| | | | `-- 192.168.3.2.html
| | | |-- stat_code.dat
| | | |-- stat_denied_url.dat
| | | |-- stat_mime_type.dat
| | | |-- stat_netuser.dat
| | | |-- stat_network.dat
| | | |-- stat_user.dat
| | | |-- stat_user_url.dat
| | | |-- url.html
| | | |-- user.html
| | | `-- users
| | | `-- 192.168.3.2
| | | `-- 192.168.3.2.html
........................................
Afficher les pages dans un navigateur web depuis n’importe quel poste du réseau local. Sur la page d’accueil, cliquer sur Stat <année>, puis sur les infos que l’on souhaite afficher.
- Réseaux
- Utilisateurs
- TopURLs
- 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. Dans l’exemple qui suit, on va produire un rapport quotidien tous les jours à 13h00. Ce n’est pas une mauvaise idée de programmer cette tâche à l’heure du repas. L’exécution du script est relativement gourmande en ressources, et si le serveur n’est pas très puissant, il peut arriver qu’il soit un peu dur de la feuille pendant quelques minutes.
# crontab -l
# SquidAnalyzer
00 13 * * * /usr/local/bin/squid-analyzer 1> /dev/null