Porneia delights

— 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 :

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)


Vous pouvez envoyer par mail vos commentaires et vos remarques à illovae[at]bk[dot]ru.

V comme Visitors (943 mots) de illovæ est mis à disposition selon les termes de la licence WTFPL(v2) - Beerware License.

Vulnerant omnes, ultima necat. Sic transit hominis regnum.
Copyleft © 2008 — illovæ