SquidAnalyzer est un outil de statistiques extrêmement pratique qui permet d’analyser en un coup d’œil 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.
Prérequis
SquidAnalyzer utilise les fichiers logs du serveur proxy Squid, qui doit donc être configuré correctement. Pour les détails, allez 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 avec un hôte virtuel.
Installation
Le développeur de SquidAnalyzer met à disposition un dépôt de paquets compatible avec Red Hat Enterprise Linux 8 et Rocky Linux 8. Voici les instructions détaillées pour la mise en place de ce dépôt :
Une fois qu’on a importé la clé GPG et qu’on a activé le dépôt, il ne reste qu’à installer le paquet :
# dnf install -y squidanalyzer
Le mainteneur du projet semble avoir oublié un paquet Perl dans la liste des dépendances. On va donc rectifier le tir ici :
# dnf install -y perl-Time-HiRes
Configuration de l’hôte virtuel
Mon proxy Squid est installé sur la machine proxy.microlinux.lan
. Je vais mettre en place un hôte virtuel squidreport.proxy.microlinux.lan
qui pointe vers le répertoire /var/www/squidanalyzer
.
Le proxy se charge également de la configuration DNS locale avec Dnsmasq. L’astuce consiste ici à utiliser les sous-domaines Dnsmasq pour définir notre nouvel hôte :
# /etc/dnsmasq.conf domain-needed bogus-priv interface=enp2s0 dhcp-range=192.168.2.100,192.168.2.200,24h local=/microlinux.lan/ domain=microlinux.lan expand-hosts server=208.67.222.222 server=208.67.220.220 no-resolv log-facility=/var/log/dnsmasq.log address=/proxy.microlinux.lan/192.168.2.1 dhcp-host=D4:85:64:B2:B2:1B,alphamule,192.168.2.2 dhcp-host=B0:83:FE:90:4D:64,sandbox,192.168.2.3 dhcp-host=68:54:5A:B2:D0:81,dell-xps,192.168.2.4 dhcp-host=D0:37:45:24:61:BD,gustave,192.168.2.5 dhcp-host=00:22:64:8A:4C:C2,nestor,192.168.2.250 dhcp-host=10:62:E5:D4:95:60,hp-officejet,192.168.2.252 dhcp-host=00:11:32:26:63:A5,nas,192.168.2.253
Ensuite, je crée un fichier /etc/httpd/conf.d/10-squidreport.proxy.conf
qui contient la configuration de l’hôte virtuel :
# /etc/httpd/conf.d/10-squidreport.proxy.conf
#
# squidreport.proxy.microlinux.lan
<VirtualHost *:80>
ServerAdmin info@microlinux.fr
DocumentRoot "/var/www/squidanalyzer"
<Directory "/var/www/squidanalyzer">
Options -Indexes +FollowSymlinks +MultiViews
AllowOverride None
</Directory>
ServerName squidreport.proxy.microlinux.lan
ServerAlias squidreport.proxy
ErrorLog logs/squidreport.proxy-error_log
CustomLog logs/squidreport.proxy-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 GB ... 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/bin/squid-analyzer # file /usr/bin/squid-analyzer /usr/bin/squid-analyzer: Perl script text executable
Lancez 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 :
# time squid-analyzer
...
real 0m8.325s
user 0m7.220s
sys 0m0.967s
Vérifiez si le rapport a été généré correctement :
# tree /var/www/squidanalyzer/
/var/www/squidanalyzer/
├── 2024
│ ├── 03
│ │ ├── 09
│ │ │ ├── denied.html
│ │ │ ├── domain.html
│ │ │ ├── index.html
│ │ │ ├── mime_type.html
│ │ │ ├── network.html
│ │ │ ├── networks
│ │ │ │ └── 192.168.2.0
│ │ │ │ └── 192.168.2.0.html
.............
Affichez les pages dans un navigateur web depuis n’importe quel poste du réseau local. Sur la page d’accueil, cliquez sur Stat <année>, puis sur les infos que vous souhaitez 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. 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/bin/squid-analyzer 1> /dev/null
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.
0 commentaire