Vous êtes sur la page 1sur 8

Dpartement Informatique

Spcification et conception
TP 3IF C++ : Analyse de logs apache
Ludmila Danilescu Marco Montalto 10/12/2013

Sommaire
Introduction ..............................................................................................................................................................3 1. Spcifications ....................................................................................................................................................3 1.1 1.2 1.3 2. Fonctionnement du programme ..............................................................................................................3 Cas normaux et cas limites + Tests associs .............................................................................................3 Cas derreur + Tests associs ....................................................................................................................4

Conception........................................................................................................................................................4 2.1 2.2 Dfinition des classes ...............................................................................................................................4 Architecture gnrale de lapplication .....................................................................................................4

3.

Donnes ............................................................................................................................................................5 3.1 3.2 Structures de donnes..............................................................................................................................5 Schmas de limplantation mmoire........................................................................................................6

3.2.1 Liste de liste .............................................................................................................................................7 3.2.2 Arbre darbre ...........................................................................................................................................7 4. Algorithmes ......................................................................................................................................................8 4.1 Analyse dune ligne de fichier log .............................................................................................................8

Analyse de logs Apache

Introduction
Lapplication conue a pour but danalyser des fichier de log Apache afin de pouvoir afficher des statiques et pouvoir gnrer des documents synthtiques au format GraphViz.

1. Spcifications
1.1 Fonctionnement du programme
Le programme va lire ligne par ligne le fichier de logs et retenir que linformation utile, c..d. : lURL du document demand, ladresse sur laquelle le navigateur se trouvait quand a effectu sa requte et lheure exacte de la requte quon appellera ensuite, respectivement, cible , refer et heure . On prendra en compte que les lignes du fichier dont la requte sest bien pass, donc celles qui ont 200 comme code retour du serveur. Aprs avoir stock la cible, le refer et lheure dans des structures de donnes on utilise celles-ci pour laffichage des statistiques.

1.2

Cas normaux et cas limites + Tests associs


Test(s) associe(s) Test2-ExecutionNormale/Test1 Test2-ExecutionNormale/Test2 Test2-ExecutionNormale/Test3

Spcification 1- Pour un fichier de log donn, le programme affiche (au max) les dix urls les plus cliqus, avec le nombre de cliques associs. 2- Lutilisation de loption [-x] permet de ne pas tenir compte des urls de type image, JavaScript et css. 3- Lutilisation de loption [-g nomFichier.dot] permet de crer un fichier .dot, exploiter grce loutil GraphViz. 4- Lutilisation de loption [-l nbHits], accompagne de loption [-g nomFichier.dot] permet de ne considrer dans le la cration du fichier .dot que les nuds qui sont relis pas des hits suprieurs au nombre de hits donn en paramtre. 5- Lutilisation de loption [-t heure] permet de ne considrer que les urls qui ont ts consults dans la tranche horaire correspondante [heure, heure+1[. 6- Le programme supporte la combinaison entre les options prsentes aux points 2-5, dans une mme excution. 7- Dans lanalyse, le programme ne tient compte que des requtes qui se sont passs avec succs (c..d. celles pour lesquelles la rponse du serveur a t 200). Toutes les autres sont ignores. 8- Le programme supporte des fichiers de grandes dimensions, en gardant la possibilit dutiliser nimporte quelle option.

Test2-ExecutionNormale/Test4

Test2-ExecutionNormale/Test5

Test2-ExecutionNormale/Test6

Test2-ExecutionNormale/Test7

Test2-ExecutionNormale/Test8anonymelog Test2-ExecutionNormale/Test9anonymelog

Analyse de logs Apache

1.3

Cas derreur + Tests associs


Test(s) associ(s) Tests3-Erreurs-Parametres/Test1 Tests3-Erreurs-Parametres/Test2 Tests3-Erreurs-Parametres/Test3 Tests3-Erreurs-Parametres/Test4 Tests3-Erreurs-Parametres/Test5 Tests3-Erreurs-Parametres/Test6 Tests3-Erreurs-Parametres/Test7 Tests3-Erreurs-Parametres/Test8 Tests3-Erreurs-Parametres/Test9 Erreur associe 100 101 102 103 104 105 106 107

Spcification 1- Le programme ne sexcute pas sil dtecte une option qui lui est inconnue. 2- Le programme ne sexcute pas sil dtecte une mme option prsente plusieurs fois. 3- Le format des paramtres des options [-t] et [-l] doit tre numrique. 4- Option [-t heure]. Lheure doit tre une chiffre comprise entre 0 et 23. 5- Option [-g nomFichierDot]. Le nom du fichier doit tre crit avec son extension correcte (.dot). 6- Loption [-l nbHits] doit tre prsente avec [-g nomFichierDot] car elle na effet que sur le fichier .dot produit. 7- Le programme ne sexcute pas sil dtecte un nombre qui nest pas prcd de loption [-l] ou [-t]. 8- Le programme ne sexcute pas sil dtecte le nom dun fichier .dot, sans que loption [-g] soit prsente.

Spcification 1- Le programme ncessite le nom dun fichier de log pour pouvoir tre excut. 2- Le fichier que lon veut analyser doit exister (dans le parcours spcifi) et on doit avoir les droits dy accder. 2- Le contenu du fichier ne doit pas tre vide.

Test associe Test1-AccesFichier/Test1 Test1-AccesFichier/Test2 Test1-AccesFichier/Test3

Erreur associe 200 201 202

2. Conception
2.1 Dfinition des classes

L'application est structure autour de trois entits (afin de privilgier la rutilisabilit) : une classe GestionFichier qui grera le fichier dentre, une classe Stockage qui grera les structures de donnes o seront stockes les cibles, les refers, les horaires et le graphe du parcours et un classe principale qui grera les options et les interactions entre les deux autres classes.

2.2

Architecture gnrale de lapplication

Afin de comprendre mieux comme lapplication est structure, c..d. quelles sont les classes, leurs rles, leurs attributs et leurs services voici une diagramme avec toutes les interactions :

Analyse de logs Apache

Fournit le nom du fichier analyser Donne les rsultats de lecture dans le fichier

GestionFichier
Attributs : -nomFichier : chaine de caractres -enLecture : flux dentre Services : +GestionFichier(nomFichier : chCaract) +~GestionFichier() +VerifOuverture() : boolen +CompteLignes() : entier +RecuperLignes(cible: chCaract & ,refer: chCaract &, heure: entier) : rien +FermeFichier(nomFichier : chCaract) : boolen

Main (B3302Test) Options, gestion cas limites et cas derreur

Stockage
Attributs : -tempMap : structure de donnes de type arbre -referHeure : structure de donnes de type arbre -log : structure de donnes de type arbre -nbHitsVector : structure de donnes de type tableau -urls : structure de donnes de type tableau -indiceUrls :entier -heureIndiquee :entier -excluImgCssJavaSpt :boolen Services : +Stockage() +~Stockage() +AddLigne(cible: chCaract ,refer: chCaract, heure: entier) : boolen +HitsParPage(heure :entier) : rien +AfficheHitsVector() : rien +CreeDotComplet(nomFichierDot : chCaract) : boolen +CreeDotSup(nbHits :entier, nomFichierDot : chCaract) : boolen +EstImage(document :chCaract ) : boolen +ExclureImageCssJavaSpt(exclure :boolen) : rien +PreciserTrancheHoraire(heure :entier) : rien

Gere lajout, demande laffichage et la cration du graphe Options

3. Donnes
Le cur de l'application repose sur le stockage des donnes (cible, refer et heure) . Il faut grer d'une part l'association d'une cible avec ses refers, et d'une autre part les nombre daccs total cette cible et les horaires, qui reprsentent l'association d'un refer avec les horaires daccs et le nombre de hits correspondant (c..d. combien de fois on a accd la cible partir de ce refer).

3.1

Structures de donnes

Pour commencer, on cre une structure de type tableau pour stocker tous les Urls(cibles+refers) du fichier de logs sans avoir de redondance, ce que nous fait gagner en terme de la mmoire. Tous les lments contenus dans notre tableau sont adjacents en mmoire, ce qui va nous permettre d'accder immdiatement n'importe quel lment. Chaque Url va tre donc caractris par lindice de la position laquelle il se trouve dans le tableau. Ensuite, pour grer les 2 types dassociation dont on a parl prcdemment on utilisera la structure de donnes de type arbre. On aura donc un arbre dont les nuds vont tre reprsents par des paires de type (entier, arbre). Lentier sera lindice de la cible. Le deuxime arbre aura ses nuds reprsents aussi par de paires (entier, tableau) ; lentier sera respectivement lindice du refer et le tableau stockera les

Analyse de logs Apache

horaires daccs et les nombres des hits. Pour mieux comprendre la modlisation de ce modle on vous propose le dessin :

Pourquoi on ncrit pas directement les noms des cibles et des refers dans les arbres correspondants, mais on passe par lintermdiaire URLs ? La principale raison pour laquelle on a choisi de faire a est le gain en place mmoire. En considrant quune cible ou un refer ont en moyenne 25 caractres (occupe 25 octets) on prfre ne les crire quune seule fois et dans la structure choisie et ne travailler que avec les indices (des entiers) correspondants aux urls. Le fait davoir choisi un tableau pour stocker les urls et pas une liste chaine nous facilite laccs un lment et linsertion dun lment une certaine position. La complexit pour laccs et linsertion dans ce cas va tre de O(1). Le choix de la structure arbre darbre sera expliqu dans la suite.

3.2

Schmas de limplantation mmoire

Pour mettre en place les 2 l'associations prcises prcdemment on sest bas sur le raisonnement suivant : les refers dune cible ne sont pas rencontrs l'un aprs l'autre. C'est pourquoi quand une paire (cible, refer) est rcupr dans le fichier de logs, il faut pouvoir accder rapidement leur tableau des horaires + nbHits si elle a dj t rencontr avant. Nous avons le choix entre la structure liste de liste et celle arbre darbre. Prenons par exemple le tableau dURLs ci-dessous qui contient dans chaque case une cible ou un refer trouvs dans un fichier.log et considrons quon avait 7 requettes diferentes dans ce fichier quon rsumera 7 couples (cible, refer) : (url2, url1), (url3, url1), (url6, url1), (url2, url3), (url3, url5), (url2, url4).

Analyse de logs Apache

3.2.1 Implmentation liste de liste

En ce qui concerne la place mmoire, dans ce cas on aura une taille totale de : 16*4octets(pointeurs)+3* 4octets(entierCible) + 6*[4octets(entierRefer)+25*4octets(tableaux)+ 4octets (pour stocker l'index du dernier lment libre du tableau)] soit 724 octets. Pour la vitesse de recherche, il faut obligatoirement parcourir la liste du dbut et lment par lment pour retrouver la cible ( ou jusqu' la fin si c'est la premire fois que l'on traite cette cible ). Ce qui fait qu'une recherche (et donc l'ajout d'un refer et une heure) se fera dans les pires cas en O(n). 3.2.2 Implmentation arbre darbre

En ce qui concerne la place mmoire, dans ce deuxime cas on aura une taille totale de : 14*4octets(pointeurs)+3* 4octets(entierCible) + 6*[4octets(entierRefer)+25*4octets(tableaux)+ 4octets (pour stocker l'index du dernier lment libre du tableau)] soit 716 octets. Pour la vitesse de recherche par contre, elle se fait en complexit O(log(n)) dans un arbre.

Analyse de logs Apache

On a choisi dimplmenter la structure arbre darbre, car elle beaucoup plus rapide au niveau de la recherche et en plus elle nous permet davoir des lments associs des cls. Les avantages du modle propos sont : non-redondance des informations, occupation de peu de mmoire et grande vitesse dexcution. De plus, cette modlisation nous permettra ensuite de produire trs facilement la description textuelle du graphe ( le fichier.dot ) .

4. Algorithmes
4.1 Analyse dune ligne de fichier log
NB : l`algorithme ici dcrit ne reprsente pas la totalit de la mthode correspondante du code source. Pour simplifier, on utilisera ici quatre boolens abstraits conditionsHeure , conditionsCible , conditionsRefer , conditionsRetourServeur qui, si vrais, permettent daffecter les valeurs dans les variables correspondantes. RecupereLigne (cible: chane de caractres, refer: chane de caractres, heure: entier) : ne retourne rien, mais change les valeurs de cible, refer et heure Dbut chane de caractres buffer caractre c boolen cibleAffectee, heureAffectee, referAffectee, russite Initialisation cibleAffectee, heureAffectee, referAffectee, russite faux tant que fin de ligne non atteinte faire si conditionsHeure est vrai et heureAffectee est false alors rcuprer dans buffer les caractres correspondantes lheure et affecter la variable heure la conversion en entier du buffer changer la valeur de heureAffectee vrai finsi si conditionsCible est vrai et cibleAffectee est false alors rcuprer dans buffer les caractres correspondante la cible et affecter la variable cible la chaine contenu dans buffer changer la valeur de cibleAffectee vrai finsi si conditionsRefer est vrai et referAffectee est false alors rcuprer dans buffer les caractres correspondante au refer et affecter la variable refer la chaine contenu dans buffer changer la valeur de referAffectee vrai finsi si conditionsRetourServeur est vrai alors rcuprer dans le buffer les caractres qui correspondent au code de retour du serveur si la conversion en entier du buffer ne vaut pas 200 alors changer la valeur de heure -1 changer la valeur de refer chec fin si fin si fin tant que Fin

Analyse de logs Apache

Vous aimerez peut-être aussi