Mise en place d’une solution d’analyse des logs : SARG
Sommaire
I. Présentation
Dans ce tutoriel, nous allons apprendre à mettre en place un analyseur de logs qui travail avec Squid. Pour faire ce tutoriel, il faut que vous ayez un proxy Squid opérationnel, je vous conseille donc ce tutoriel si ce n'est pas le cas : Mise en place d'un proxy Squid.
II. Qu'est ce que l'analyse des logs ?
Les logs sont les fichiers ( textes ) créés par les proxy qui y listent et répertorient le comportement des utilisateurs du réseau. Les flux du réseau local vers internet sont donc tous capturés et inscrits dans un ou plusieurs fichiers de logs. Ces fichiers contiennent plusieurs milliers de lignes et un nombre immense d'informations. En voici un exemple :
Nous voyons bien que la lecture de ces lignes est complexe. Dans une entreprise ou un organisme de plusieurs centaine de postes. Un fichier de logs peut atteindre plusieurs centaines de Mo en quelque jours.
Pour faciliter la consultation et le traitement de ces informations, des logiciels d'analyses de logs on été mis en place. SARG est l'un des analyseurs de logs les plus efficace et les plus précis pour les solutions libres sous GNU/Linux.
Voici un schéma de l'environnement et du fonctionnement de l'analyse de logs.
Les clients vont donc sur Internet en passant par le serveur Proxy. Celui-ci met en sauvegarde les requêtes des clients et les stockes dans le fichiers de logs. SARG vient ensuite lire ces fichiers de logs pour créer des tableaux et des statistiques plus simples et plus claires pour les administrateurs.
III. Installation
Pour facilité la mise en place et le fonctionnement de SARG, il est préférable de l'installer sur le serveur faisant tourner SQUID.
apt-get update apt-get install sarg apache2
IV. Configuration basique
Le fichier de configuration se situe dans "/etc/sarg/".
Assurez vous que le chemin vers le fichier de logs de Squid est le bon soit "/var/log/squid/acces.log".
Dé-commentez les lignes qui permettront l'affichage de graphiques :
graphs yes graph_days_bytes_color orange
Changez la ligne 377 en UTF-8 qui est le type de caractère utilisé.
Vous pouvez dés à présent lancer une analyse des fichiers de logs avec SARG. Le fichier exécutable se trouve dans "/usr/bin"
/usr/bin/sarg
Par défaut, les analyses ne sont pas directement consultables via interface graphique. Il faut donc faire un lien symbolique entre le dossier ou ils sont déposés et le dossier "/var/www/" :
ln -s /var/lib/sarg/ /var/www
Pour automatiser nativement cette tâche, modifiez la ligne output_dir dans /etc/sarg/sarg.conf et mettez y le chemin vers le dossier voulu.
Regardez votre analyse en consultant : http://[IPServeurProxy]/sarg/
Voici un aperçu de ce que vous pourrez y voir :
Ici, le fichier de logs à donc été lu et interprété par SARG qui a généré des tableaux et statistiques sur les connexions.
Réaliser une analyse sur une période donnée :
Afin d'avoir une analyse plus claire et rapide à lire. Il est possible de réaliser des analyses sur plusieurs plages temporelles. Ici, nous prendrons une plage hebdomadaire.
Pour faire une analyse allant du 6 au 12 février 2012 :
/usr/bin/sarg -d "06/02/2012-12/02/2012"
V. Automatisation des analyses :
Afin de rendre automatique l'exécution des analyses de logs sur le serveur. Il est possible de créer un script qui sera ensuite automatisé par crontab :
#!/bin/bash LOG_FILES= if [ -s /var/log/squid/access.log.1 ]; then LOG_FILES="$LOG_FILES -l /var/log/squid/access.log.1" fi if [ -s /var/log/squid/access.log ]; then LOG_FILES="$LOG_FILES -l /var/log/squid/access.log" fi #Prendre le premier jour de la journée # numéro du jours NUMDAY=$(date --date "6 day ago" +%u) #Fait la différence avec lundi DIFFSTART=`expr 5 + $NUMDAY` DIFFEND=`expr $DIFFSTART - 6 ` #Prend le premier et dernier jour de la semaine au format jj/mm/AAAA (format d’envoi à l’exécution) FIRSTDAYINWEEK=$(date --date "$DIFFSTART day ago" +%d/%m/%Y) LASTDAYINWEEK=$(date --date "$DIFFEND day ago" +%d/%m/%Y) # Création de l’intervalle utilisé pour délimiter le rapport INTERVAL=$FIRSTDAYINWEEK-$LASTDAYINWEEK SARG_DIR=’/usr/local/bin’ # On définit le chemin vers l’exécutable SARG #Exécution de sarg # $LOG_FILES = Chemin vers les fichiers de log # -d Interval de temporel de l’analyse /usr/sarg $LOG_FILES -d $INTERVAL ;
Bonjour,
J’ai suivi votre tuto pour installer sarg ça marche impec avec le squid. Mais par contre je n’arrive pas à rajouter les logs pour squidguard j’ai l’impression que mes logs de squidguard ne sont pas au bon format.
Voici le message d’erreur quand je fais un sarg -x :
SARG: Line= »01/01/1970 01:00:14 [2459] – »
SARG: Record= »http://www.mangas.fr/favicon.ico Request(test/manga/-) 15:12:36 « » »
SARG: searching for ‘x9’
SARG: getword backtrace:
SARG: 1:sarg() [0x4091c7]
SARG: 2:sarg() [0x409a68]
SARG: 3:sarg() [0x40e723]
SARG: 4:sarg() [0x4081b7]
SARG: 5:/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7f72ae44376d]
SARG: Il y a un enregistrement erroné ou inattendu dans le fichier /tmp/sarg/get.log
Voici mon fichier manga.log :
2014-03-14 15:12:36 [2459] Request(test/manga/-) http://www.mangas.fr/ 192.168.0.10/- – GET REDIRECT
2014-03-14 15:12:36 [2459] Request(test/manga/-) http://www.mangas.fr/favicon.ico 192.168.0.10/- – GET REDIRECT
2014-03-14 15:12:39 [2459] Request(test/manga/-) http://www.manga-news.com/ 192.168.0.10/- – GET REDIRECT
2014-03-14 15:12:39 [2459] Request(test/manga/-) http://www.manga-news.com/favicon.ico 192.168.0.10/- – GET REDIRECT
2014-03-14 15:12:41 [2459] Request(test/manga/-) http://www.manga-sanctuary.com/ 192.168.0.10/- – GET REDIRECT
2014-03-14 15:12:41 [2459] Request(test/manga/-) http://www.manga-sanctuary.com/favicon.ico 192.168.0.10/- – GET REDIRECT
2014-03-14 15:12:50 [2459] Request(test/manga/-) http://www.mangaluxe.com/ 192.168.0.10/- – GET REDIRECT
Auriez vous une idée du problème ?
Merci d’avance
Laurent
Salut.
En ce qui concerne l’automatisation, pour ma part j’ai créer 3 scripts pour avoir des rapport journalier / semestriel / mensuel.
Dans /usr/sbin:
fichier sarg-daily-report:
TODAY=$(date +%d/%m/%Y)
YESTERDAY=$(date –date ‘1 day ago’ +%d/%m/%Y)
sarg /var/log/squid/access.log -o /var/www/squid-reports/daily -z -d $YESTERDAY-$TODAY
exit 0
fichier sarg-weekly-report:
TODAY=$(date +%d/%m/%Y)
STARTWEEK=$(date –date ‘1 week ago’ +%d/%m/%Y)
sarg /var/log/squid/access.log -o /var/www/squid-reports/weekly -z -d $STARTWEEK-$TODAY
exit 0
fichier sarg-monthly-report:
TODAY=$(date +%d/%m/%Y)
STARTMONTH=$(date –date ‘1 month ago’ +%d/%m/%Y)
sarg /var/log/squid/access.log -o /var/www/squid-reports/monthly -z -d $STARTMONTH-$TODAY
exit 0
et balancer tout ca dans crontab de root:
#crontab -e:
0 0 * * * /usr/sbin/sarg-daily-report
0 1 * * 1 /usr/sbin/sarg-weekly-report
3 2 1 * * /usr/sbin/sarg-monthly-report
Petite modification du fichier index.html dans /var/www/squid-reports/ (je met juste la partie body, le reste ne change pas)
#nano /var/www/squid-reports/index.html
<img src="./images/sarg.png" title="SARG, Squid Analysis Report Generator"
Squid User Access Report
FICHIER/PERIODE
Rapport journalier
Rapport Hebdomadaire
Rapport Mensuel
ITPPA
Profiter en pour faire vos modifications /personnalisation a vous (genre changer le logo ou la phrase du bas).
CTRL+x -> Y pour sauvegarder
et le tour est jouer, il vous suffit d’accéder a cette page:
http:///squid-reports/
et vous devriez avoir une page comme ceci:
ATTENTION, ceci implique que vous devez faire un rotation du log /var/log/squid/acces.log mensuellement et APRES la génération du rapport mensuel, sinon les rapport ne seront pas complet
pour cela, modifier (ou creer) le fichier /etc/logrotate.d/squid comme suis:
/var/log/squid/*.log {
compress
delaycompress
missingok
nocreate
sharedscripts
postrotate
test ! -e /var/run/squid.pid || /usr/sbin/squid -k rotate
endscript
monthly
}
Y’a moyen d’améliorer tout ca, comme par exemple faire qu’un seul script en passant une variable en paramètre, et modifier la variable dans les taches cron, j’avais fait ca il y a quelque année et je ne me suis jamais pencher sur l’amélioration, ca fait plus d’un ans que ca marche comme ca et j’en suis satisfais.
ITPPA
Très bon article.
Juste un « sur » qui manque dans la phrase de la partie installation.
Bonjour,
Je tiens avant tout à te remercier de ton tuto.
Super intéressant. Je suis novice et j’ai quelques questions:
1- En mettant en place ta solution, j’ai eu ce message d’erreur en éxecutant /usr/bin/sarg:
>>>SARG: (grepday) Fichier de police /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf pas trouvé
2- Y a-t-il un moyen de mettre en place un mode recherche pour plus affiner des analyses.?
Salut,
Un grand merci pour ce tuto clair qui m’a permis de mettre en place SARG.
Par contre, lorsque je lance sarg -x je reste sans cesse sur la période 01Jan1970-01Jan1970
Si je lance sarg -x -d « 28/08/2017 », j’ai le résultat SARG: SARG version: 2.3.10 Apr-12-2015
SARG: Loading user table from LDAP
SARG: Reading access log file: /var/log/squid/access.log
SARG: Records read: 54387, written: 0, excluded: 0
SARG: Squid log format
SARG: No records found
SARG: End
Pour autant, le fichier access.log contient bien toutes les url des sites visités.
Une idée ?
Hello
Solution trouvée : logformat dans la conf de squid qui ne doit pas être modifiée pour que SARG puisse les lire.
Par contre ma colonne « accessed sites » me renvoi les valeurs « GET », « CONNECT », « HEAD ».
Dans l’access.log ce sont des valeurs qui précèdent l’URL des sites qui devraient apparaître dans « accessed sites ».
Une idée ? 😉
Bonjour,
Merci pour votre tuto.
J’ai bien suivi la procédure jusqu’à l’obtention de l’interface SARG, squid user access report.
Mais lorsque je clique sur les options Top sites, sites et users, denied accesses, je reçoit successivement les messages d’erreurs suivantes:
– The request url / squid-reports /2017sept27-2017sept27/topsites.html was not found on this server.
– The request url / squid-reports /2017sept27-2017sept27/siteuser.html was not found on this server.
– The request url / squid-reports /2017sept27-2017sept27/denied.html was not found on this server.
J’ai l’impression qu’il reste une dernière configuration à faire .
Merci pour votre aide