Britney Gopherspace, 03 mai 2008,
illovæ —
Je cherchais déjà depuis un petit moment ce qu'on appelle un
"parser de log apache". Autrement dit, un truc qui vous passe
à la moulinette votre (vos ?) access.log
et vous en sort
des statistiques.
Mes conditions étaient les suivantes : il fallait :
- qu'il soit rapide (mon coucou est vieux, il faut le ménager :P) ;
- qu'il puisse me faire des rapport directement dans la sortie standard de mon shell, ou dans un fichier .txt ;
- qu'il accepte des options directement en ligne de commande sans avoir forcément à passer par un démon ou un fichier de configuration ;
- que ça soit (très ?) léger.
Donc suivant tout cela, exit les usines à la awstats par exemple. Et alors par le plus grand des hasards (à tel point que je me souviens même plus comment je suis tombé dessus) j'ai trouvé visitors.
Ce petit programme écrit en C et tout léger, rempli toutes mes conditions, avec le fait qu'en plus il gère très bien aussi les rapports en .html...
Que demandez-vous de plus ?
Une installation ? Okay, alors let's go :
Sous debian/ubuntu/what_else_deb_powered, simplement :
# apt-get install visitors
Pour les heureux possesseurs de Gentoo, rien de plus complexe :
# emerge -va visitors
Et comme d'habitude, je ne connais pas suffisamment les autres distributions, je vous laisse vous débrouiller comme des grands garçons et des grandes filles :)
Hop ça compile ou ça s'installe, mais en tout cas c'est rapide pour tout
le monde. S'il vous prenait l'envie de compiler, les sources
sont ici. Comme vous pourrez le voir dans le
README
, y'a pas tellement de complication, sinon avoir
des doigts, ou des pieds, ou de la reconnaissance vocale, ou le
truc-qui-permet-de-diriger-le-curseur-avec-les-yeux, ou... enfin bref,
suffit de pouvoir faire une make
.
Même pour les quelques que ça tenterait, l'auteur a aussi mis les sources a disposition sous forme html.
Ensuite, c'est pas sorcier ! Fred et Jamy nous explique qu'un simple :
$ visitors -A --output text -m 30 /pathto/access.log > ~/log_stats.txt
va déjà nous donner de sérieux résultats. Je vous laisse admirer. Évidemment, Fred, qui n'a pas sa langue dans sa poche s'empresse de nous faire découvrir comment faire la même chose en html :
$ visitors -A --output html -m 30 /pathto/access.log > ~/log_stats.html
Mais ce charabia sera bientôt pour vous aussi blanc que le camion de Marcel grâce aux quelques explications de Jamy :
Déjà vous l'avez compris --output html/text
permet de
spécifier le type de fichier à générer, le -A
est en fait
la contraction d'une ribambelle d'autres options, telle que
l'activation d'un encart pour les requêtes issues de Gogol, des tas de
choses très intéressantes sur les referers, des cartes par jours et
par mois, les browsers utilisés etc, etc. ; enfin ici le -m
30
c'est le nombre maximum d'entrées qui seront affichées par
catégories traitées...
Évidemment je ne vais pas vous traduire la man (quoique si vous en avez vraiment besoin, et vous avez de l'argent à perdre, je suis là :D) et donc je vais vous laisser aller y jeter un peuhtit coup d'oeil.
À noter que sous Gentoo, il n'y a pas de page man :0 Mais n'ayez point de
peur damoiseaux et damoiselles, car la documentation, tournée telle une
manpage se trouve en ligne ici ou encore dans votre
/usr/share/doc/visitors*/html/doc.html
(à vrai dire j'ai
pas vérifiée directement sous Debian que cette man existait mais un
simple apt-file search visitors | grep man
m'a indiqué
que c'était le cas... pour deux distributions déjà (Debian et Ubuntu)
:D).
Bien je sais déjà plus où j'en suis... Ah oui, donc la man toussa, c'est dit... Allez pour finir, j'ai ajouté tout ça dans un crontab de cette facon :
* */5 * * * visitors --output text -AXSZHY -m 30 --screen-info \ /var/log/apache2/access.log > \ ~/report_axx_`date +%d%m.%H%M.%S`.txt 2>&1 /dev/null
Et voilà, ça s'exécute tous les jours à 5 heures du matin. Vous
remarquerez le 2>&1 /dev/null
histoire que cron ne
m'envoie pas de mail avec le résultat de la sortie en stdout (oui, il
faut ruser, visitors n'a pas de mode silent, ce qui parait finalement
assez logique...).
Je me ferai à terme je pense un petit script regroupant tout ça, et me
faisant un grand coup de mail -s
final pour avoir un
rapport, sinon quotidien, au moins hebdomadaire de l'activité de mon
apache...
Si vous avez envie de voir le résultat final, ça ressemble à ça :)
Pour finir, sachez que ça marche très bien avec les logs d'apache, mais aussi d'autres serveurs, je vous laisse regarder sur le site pour plus de détails... (par exemple, aucun problème avec nginx). Enfin, et ça je le dis surtout pour mon cher ami McPeter :
McPeter, je sais que tu utilises IIS (si vous ne savez pas ce que c'est,
ne cherchez pas a le savoir :P) et bien tu peux aussi utiliser visitors
(si, si). L'auteur a pense à toi et dans les sources (ou dans votre
/usr/share/visitors
) il y a un petit script perl qui
permet de convertir les logs IIS en quelque chose de propre... Je n'en
dis pas plus je file vite avant qu'il ne me retrouve :D. Je vous
laisse lire la documentation (notamment aussi pour ce qui concerne
l'option --stream
) :P
Taaaanananaaaa tadatadatadadaa taaaananonanaaa... (générique de fin)