Analyseur de Log – Perl

Présentation :

Je vais vous présenter aujourd’hui, un mini projet de programmation en Perl dont le sujet est l’analyse de fichiers de Log de serveurs Web.

Le programme va permettre de simplifier la vie des administrateurs réseaux en effectuant des statistiques sur ces différents fichiers de logs.

Cahier des charges :

Il est nécessaire de définir dans un premier temps, un mini cahier des charges afin de structurer notre travail.

Voici un premier plan d’action :

–    Ouverture simple d’un fichier .log contenant des lignes spécifiques.
–    Détecter si le fichier est sous la forme d’un fichier de log Apache ou IIS.
–    Permettre le choix du type de statistique à afficher (fonctions).
–    Permettre de choisir l’affichage au moyen d’une contrainte temporel.
–    Sauvegarder les résultats dans un format plus concis.

Schéma fonctionnel :

Définition principale du programme :

Entrée du programme : Elog.pl <Fichier log> <date début> <date fin> (type XX/XX/XXXX)

Vérification des paramètres : Existence du fichier, et bon format de date sinon erreur

Prise en compte automatique du format de fichier : Apache ou IIS (expression régulière)

Affichage du menu :

Bienvenu dans le programme d’analyseur de log
Programmer par Nickname

Veuillez entrer le numéro correspondant à l’action voulue :

1. Nombre d’adresses IP présentes dans le fichier
2. Hits des 10 adresses IP les plus présentes
3. Hits des 10 pages les plus visitées
4. Hits des 10 premières sources – URLs précédentes
5. Hits des user agent les plus présents
6. Somme en ko pour toutes les IP
7. Somme en ko par IP – 10 Résultats
8. Quitter le programme

Prise en compte du choix de l’utilisateur : Envoi vers la fonction suivant son choix

Affichage de la statistique : Affichage de la statistique souhaitée

Copie incrémentielle : Copie dans un fichier de la statistique. Cette copie sera incrémentielle, ce qui permettra d’avoir des statistiques centralisées.

Fichier de log :

Pour réaliser notre test, il sera nécessaire d’avoir un fichier de log spécifique.

Nous allons prendre ce type de format :

IIS : %time2 %host %logname %method %url %code %bytesd %other %ua %referer
Exemple : 2002-01-05 10:10:10 10.168.0.1 – GET /index.php 200 2000 – Mozilla/4.0 (compatible; MSIE 5.5; Windows 4.0) http://www.lestutosdenico.com/

Apache : %host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot
Exemple : 10.90.90.90 – – [08/Aug/2009:19:45:42 +0100] « GET /index.php HTTP/1.1 » 100 300 « http://www.lestutosdenico.com » « Mozilla/5.0 (compatible; MSIE 7.0; Windows) »

Le fichier de log va contenir un grand nombre de lignes de ce type. Chaque champ devra être récupérer dans notre programme afin de traiter les statistiques. Nous avons choisis un choix de détection automatique du format. Si une ligne de type Apache et une ligne de type IIS sont présentes dans le même fichier log, le script sera capable de les traiter indépendamment.

Prérequis :

Pour lancer le programme, vous aurez besoin de deux choses :

– Perl (oui oui looool).
– Le module « Date::Calc » (voir le tuto d’introduction à Perl : http://www.lestutosdenico.com/tutos-de-nico/introduction-a-perl).

Algorithme et code source :

Vous trouverez ci-dessous un lien vers le document .pdf contenant l’algorithme de l’analyseur de log ainsi que le fichier source du programme en .pl :

Télécharger Elog-Nickname.pdf
Télécharger Elog-Nickname.pl

Je reste disponible pour toutes remarques/idées d’améliorations du programme 😉

4 Responses to "Analyseur de Log – Perl"

  • admin says:
  • Heurs says:
  • admin says:
  • MoiCMoi says:
Laissez un commentaire