69
Projet Deux Modules Ecole Nationale des Sciences de l’Informatique ENSI Introduction générale Dans cette introduction, nous commençons par situer le projet dans son cadre puis nous décrivons le travail demandé. Ensuite, nous présentons le contexte et la problématique et nous finissons par donner un aperçu sur l’organisation du rapport. I- Cadre du projet : Dans le cadre de la formation d’ingénieur informaticien à l’Ecole Nationale des Sciences de l’Informatiques (ENSI), les élèves ingénieurs de la deuxième année sont appelés à réaliser un projet de développement d’une application nommé « projet deux modules ». C’est dans ce cadre et pour l’année universitaire 2007/2008 que nous avons effectué le présent projet. II- Travail demandé : Le travail qui nous a été demandé est de réaliser un outil qui permet l’analyse des fichiers « log » du Proxy Squid et d’en tirer toutes les informations utiles au suivi du fonctionnement du serveur, ces informations devraient être utiles à l’administrateur afin d’entreprendre les actions qui s’imposent suivant une optique préventive et corrective. 1

rapport stage - analyseur fichier log

Embed Size (px)

DESCRIPTION

cette application permet d'analyser les fichiers journaux du proxy squid.A partir de ces fichiers, ils peut fournir diverses statistiques qui peuvent nous renseigner sur le comportement de notre réseau. l'apport de cet analyseur est qu'il permet une navigation facile entre les différentes statistiques. cette dynamicité permet d'offrir des résultats encore plus satisfaisants comparés aux résultats statiques.

Citation preview

Page 1: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Introduction générale

Dans cette introduction, nous commençons par situer le projet dans son cadre puis nous

décrivons le travail demandé. Ensuite, nous présentons le contexte et la problématique et nous

finissons par donner un aperçu sur l’organisation du rapport.

I- Cadre du projet :

Dans le cadre de la formation d’ingénieur informaticien à l’Ecole Nationale des Sciences de

l’Informatiques (ENSI), les élèves ingénieurs de la deuxième année sont appelés à réaliser un projet

de développement d’une application nommé « projet deux modules ». C’est dans ce cadre et pour

l’année universitaire 2007/2008 que nous avons effectué le présent projet.

II- Travail demandé :

Le travail qui nous a été demandé est de réaliser un outil qui permet l’analyse des fichiers

« log » du Proxy Squid et d’en tirer toutes les informations utiles au suivi du fonctionnement du

serveur, ces informations devraient être utiles à l’administrateur afin d’entreprendre les actions qui

s’imposent suivant une optique préventive et corrective.

Le sujet tel qu’il a été proposé dans le document initial est le suivant : « A travers l’analyse

des fichiers « log » de Squid, l’application doit fournir des statistiques sur le trafic par service, par

utilisateur, par poste et par site... ».

1

Page 2: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

1.

III-Contexte et problématique :

Il est souvent indispensable de mettre à la disposition de l’administrateur du réseau des outils

performants et faciles à manipuler afin de l’aider à contrôler le fonctionnement du serveur Proxy et

afin de lui permettre d’expliquer certaines situations de surcharge ou encore d’abus d’utilisation.

C’est dans ce contexte que se situe notre application qui s’occupe particulièrement du Proxy

Squid qui est l’un des Proxy les plus utilisés pour l’accès à Internet dans les milieux professionnels.

Le Proxy Squid permet la translation d’adresses (NAT : Network Address Translation), la

minimisation de l’utilisation de la bande passante, l’amélioration des temps de réponse à travers un

mécanisme de cache et la génération de fichiers journaliers. Ces journaux enregistrent la trace de

tous les événements et l’historique du fonctionnement du serveur. Les fichiers journaliers sont

généralement volumineux et sont difficiles à exploiter directement. Or l’administrateur devrait

disposer d’informations synthétisant ces données, notamment des statistiques claires et précises.

Dans ce contexte, notre projet consiste à développer une application permettant d’analyser ces

fichiers et de dégager différentes statistiques utiles pour la gestion du réseau.

IV- Organisation du rapport :

Ce rapport se compose de quatre chapitres. Le premier chapitre est consacré à l’étude

préalable où nous présentons quelques logiciels comparables à celui que nous devons développer.

Le deuxième chapitre est relatif à l’analyse et à la spécification des besoins, il contient une

explication détaillée des exigences auxquelles l’outil doit répondre. Le chapitre suivant développe

la conception du logiciel après avoir présenté les problèmes posés, les solutions possibles et celles

retenues. Enfin, le chapitre réalisation décrit l’environnement de développement et illustre quelques

interfaces homme machine.

2

Page 3: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Chapitre 1 : Etude préalable

Dans ce chapitre, nous présentons le serveur Proxy Squid et les fichiers « log » qui sont à la

base de notre travail. En second lieu, nous élaborons une étude comparative de quelques outils

représentatifs d’analyse des fichiers « log ».

I- Etude de l’existant

1. Présentation du serveur Proxy Squid

Squid est un serveur mandataire(Proxy) libre développé sous licence GPL. Ce serveur

propose une multitude d'options et de services qui lui ont permis d'être très largement adopté par les

professionnels mais aussi dans un grand nombre d'écoles ou d’administrations travaillant avec des

systèmes de type Unix.

Les principaux services offerts par Squid sont :

o La translation d’adresses NAT (Network Address Translation) : l'adresse IP source

d'une requête à destination d’Internet n'est plus celle du client Web mais celle du

serveur mandataire, ceci permet l’accès à Internet même si l’adresse source est privée,

de plus cette fonction permet à une institution de cacher son plan d’adressage et ainsi

protéger son réseau contre certaines attaques.

o La gestion de la cache : il s’agit de garder en mémoire cache les pages HTML et autres

objets (images, animations...) téléchargés à partir de la toile et ainsi éviter le

téléchargement multiple d’un même objet, ce qui permet d’améliorer l’utilisation de la

bande passante et donc les temps de réponse. Les objets sont périodiquement éliminés

ou rafraîchis.

3

Page 4: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

4

Page 5: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

o Le filtrage : filtrer les connexions à Internet en appliquant des règles de sécurité.

o L’authentification: authentifier les clients avant qu'ils puissent accéder à Internet.

Comme tous les serveurs mandataires, Squid met à la disposition des administrateurs des

fichiers « log » (cache.log, useragent.log, access.log, store.log…) renfermant une énorme quantité

de données sur l’historique et l’évolution de l’état du réseau. Ils sont utilisés afin de générer des

rapports et des statistiques qui peuvent être utiles pour des raisons de sécurité et d’amélioration des

services fournis.

2. Présentation du fichier « log » de Squid

2.1- Définition et utilité des fichiers « log »

Généralement, les Proxy détaillent toutes leurs activités dans des fichiers journaliers appelés

fichiers « log ». Ces derniers représentent une source riche et précieuse d’informations. En effet,

ces journaux enregistrent la trace de tous les événements et l’historique du fonctionnement du

serveur. Mais face à la diversité des formats et à la quantité considérable d’informations qu’ils

contiennent, on est amené à automatiser le processus d’analyse et de génération de statistiques

utiles pour le suivi du réseau.

Les informations dont on a besoin pour la réalisation de notre outil d’analyse se concentrent

dans le fichier Access.log de Squid. Il existe d’autres fichiers générés que nous n’allons pas

exploiter dans le présent travail.

2.2- Le fichier Access.log [Net1]

Le fichier Access.log garde une trace des requêtes adressées à Squid. Chaque requête est

décrite par un enregistrement. Un enregistrement comporte 10 champs séparés par un espace vide :

Time, elapsed, remotehost, code/status, bytes, method, URL, rfc931, peerstatus/peerhost, type/format.

5

Page 6: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

La description de ces différents champs est illustrée dans ce qui suit :

o Le champ « time » est une valeur temporelle en millisecondes exprimée suivant la

norme UTC. Il indique à quel moment la page Web concernée est ramenée en

mémoire cache par Squid.

o Le champ « elapsed » correspond aussi à une valeur temporelle, il exprime en

millisecondes la durée nécessaire au cache disque pour gérer chaque transaction, c'est

à dire le temps que Squid met pour aller chercher un objet.

o Le champ « remotehost » est une adresse IP, celle du client mandataire qui a effectué

la requête.

o Le champ « code/status »  comprend deux valeurs séparées par "/", la première valeur

représente un code de résultat faisant référence au protocole TCP ou UDP. Dans

l’annexe on trouve une liste de tous les codes accompagnés de leurs descriptions

détaillées. La seconde valeur correspond à un code résultat relatif au protocol HTTP

définis par la RFC 2616, à l'exception des codes 0 et 600 ajoutés par les développeurs

de Squid. Ces codes bien connus sont retournés en réponse aux requêtes HTTP sur la

toile.

o Le champ « bytes » représente le volume des données délivrées au client mandataire,

en octets. Cette valeur est plus importante que la taille de l'objet elle-même, parce qu'il

y a toujours le téléchargement de données d'accompagnement.

o Le champ « method » indique la méthode utilisée pour obtenir l'objet, par exemple

GET.

o Le champ URL représente l'objet demandé par le client mandataire.

o Le champ suivant « rfc931 » est constituée de tirets, ce qui signifie que les

vérifications d'identité des clients (ident_lookup) sont désactivées, cas le plus fréquent.

o Le champ « peerstatus/peerhost » contient deux valeurs séparées par "/", la première

« peerstatus » est un code de hiérarchie qui explique comment la requête a été traitée

par Squid (en passant par un autre serveur mandataire ou directement...), la seconde

« peerhost » est le nom d’hôte de la machine à laquelle Squid a demandé l'objet. Il

peut être le site d'origine de l'objet ou un serveur mandataire pair ou parent. Dans

l’annexe on trouve une liste de tous les codes de hiérarchie accompagnés d’une

description détaillée.

6

Page 7: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

o Le champ « type/format » est aussi composée de deux valeurs séparées par "/": le type

d’objet qui a été demandé par le client mandataire et son format, par exemple text/html

ou bien image/gif...

Vu l’importance et la richesse des informations contenues dans les « log » et vu que leur

exploitation ne peut se faire directement, il est donc nécessaire d’utiliser un analyseur de fichiers

permettant d’exploiter au mieux ces informations.

II- Etude de quelques outils d’analyse de fichiers « log » de

Squid

En effectuant des recherches sur Internet, nous avons rencontré une multitude d’outils

d’analyse de fichiers « log » de Squid.

Dans ce qui suit, nous allons présenter quelques uns que nous jugeons parmi les plus

importants de point de vue fonctionnalités et parmi les plus couramment utilisés. Ces outils sont :

AWStats [Net1], Sawmill [Net2] et Log_Report [Net3].

o AWStats :

AWStats est un outil puissant d’analyse de fichiers journaliers de différents formats

permettant de générer des graphes et des rapports de statistiques à partir des données de ces fichiers.

Il peut analyser les fichiers journaliers de la majorité des serveurs comme les fichiers « log »

d’Apache, WebStar et bien d’autres serveurs Web, Proxy, Wap, des serveurs de streaming et

certains serveurs ftp. Ce logiciel, bien qu’il soit puissant, n’est pas spécifique au Proxy Squid et

donc les statistiques générées n’exploitent pas au mieux les riches informations des fichiers

journaliers de Squid.

o Sawmill :

Sawmill est un outil d’analyse de journaux puissant et hiérarchique qui fonctionne sur toutes

les grandes plateformes. Il est particulièrement bien adapté aux fichiers journaux de serveur Web,

mais peut traiter presque n'importe quel fichier « log » notamment ceux du Proxy Squid. Les

rapports que Sawmill génère sont hiérarchiques, attrayants et fortement réticulés pour faciliter la

7

Page 8: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

navigation. Cependant, cet outil n’est pas gratuit ce qui reste un grand inconvénient par rapport aux

autres outils disponibles.

o Modlogan:

Modlogan est un analyseur modulaire de fichiers journaliers qui est actuellement en mesure

d'analyser les journaux des serveurs web et du Proxy Squid. Cet outil génère un fichier qui peut être

visualisé par un navigateur web ou un éditeur de texte. Les données sont traitées de la même façon,

que ce soit des données en provenance d’un serveur web, d’un Proxy Squid, d’un serveur de

streaming ou d’un serveur ftp. Un inconvénient majeur concernant cet outil est la façon dont il traite

les données et qui n’est pas spécifique au Proxy Squid ce qui rend les statistiques moins riches

qu’elles ne peuvent l’être s’il y avait eu une bonne exploitation de ces journaux.

Suite à la description de ces quelques outils d’analyse de journaux, nous constatons que, bien

qu’ils soient nombreux, nous n’avons pas trouvé un outil gratuit, spécifique au Proxy Squid offrant

la possibilité de naviguer entre les statistiques pour tout en exploitant les données riches des fichiers

« log » de Squid et en ayant une interface conviviale qui facilite la lecture de ces statistiques et des

graphes correspondants.

III-Conclusion

En dégageant les limites des outils d’analyse de journaux existants sur le marché et tout en

s’inspirant de leurs fonctionnalités et caractéristiques, nous avons choisi de développer un outil qui

répond aux besoins et aux contraintes qu’on va spécifier et détailler dans le chapitre suivant.

8

Page 9: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Chapitre 2 : Analyse et spécification des besoins

Dans ce chapitre, nous abordons la phase d’analyse et spécification des besoins. Ainsi, nous

présentons les besoins fonctionnels et non fonctionnels de notre application. Nous utilisons le

langage UML comme un moyen simple et compréhensible afin de décrire les principaux cas

d’utilisation.

I- Besoins fonctionnels

Cette partie décrit les exigences que le système doit satisfaire d’une façon informelle.

Les fonctionnalités qu’on se propose de fournir dans notre logiciel sont les suivantes :

Générer des statistiques relatives aux connexions Internet. Ces statistiques concernent

particulièrement :

les sites web les plus visités avec des informations relatives aux nombres de visites,

l’utilisation de la mémoire cache et de la bande passante,

les utilisateurs et les postes les plus actifs sur le réseau avec une description des

activités,

les pics d’utilisation du réseau (évolution du trafic au cours du temps),

le taux d’exploitation de la mémoire cache.

Filtrer les statistiques à générer selon les critères définis par l’utilisateur : les critères de

filtrage sont :

par utilisateur,

par poste,

par protocole,

par date.

9

Page 10: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Assurer une navigation entre les statistiques suivant certaines relations qui peuvent exister

entre elles.

Générer à la demande un rapport détaillé contenant toutes les statistiques.

II- Besoins non fonctionnels

L’application doit présenter des interfaces conviviales et ergonomiques afin de faciliter

l’utilisation de l’application par un utilisateur qu’il soit spécialiste ou non.

Seuls les journaux de Squid seront pris en considération.

Afin de mieux comprendre les fonctionnalités de notre outil nous présentons les diagrammes

de cas d’utilisations qui nous jugeons les plus représentatifs.

III-les cas d’utilisation du système

Dans ce qui suit, nous présentons un formalisme semi formel de spécification des besoins de

notre système, à l’aide des diagrammes de cas d’utilisation [fig.1] accompagnés par une explication

textuelle de ses principaux cas d’utilisation.

o Le cas d’utilisation « Configurer » :

L’administrateur peut communiquer à l’outil un fichier « log ». Ce dernier l’intercepte,

l’analyse, le convertit dans un format générique et le stocke sous ce format dans une base de

données, ensuite l’administrateur introduit le nombre d’enregistrements à prendre en

considération lors de l’affichage des graphes ainsi qu’il peut configurer les paramètres de

filtrage.

o Le cas d’utilisation « Editer rapport » :

L’administrateur peut introduire directement ou au fur et à mesure de la navigation les

différentes statistiques à inclure dans le rapport et il a la possibilité d’enregistrer le rapport

final sous format PDF qui pourrait être imprimé par la suite.

10

Page 11: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Figure 1 : Le diagramme de cas d’utilisation

o Le cas d’utilisation «Naviguer entre les statistiques » :

L’administrateur peut naviguer aisément entre les différentes statistiques ; un scénario

possible consiste à explorer les statistiques relatives aux sites les plus visités, et ensuite

dégager les informations en relation avec ces derniers comme ceux relatives aux utilisateurs,

aux postes qui les ont consultés, aux protocoles, etc.

11

Page 12: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

12

Page 13: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

o Le cas d’utilisation « Consulter statistiques» :

L’administrateur, après avoir choisi un critère de filtrage (par date, par poste, par url,

etc.), peut visualiser les statistiques correspondantes sous formes tabulaire et graphiques.

IV- Conclusion

Ce chapitre nous a permis de couvrir tous les cas d’utilisation concernant l’utilisation de notre

présent analyseur de fichiers « log » du Proxy Squid et de définir les besoins non fonctionnels à

prendre en considération afin de satisfaire les utilisateurs. L’analyse et la spécification des besoins

étant établies, nous essayerons dans le chapitre suivant de concevoir clairement l’architecture de

notre système.

13

Page 14: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Chapitre 3 : Conception du logiciel

Ce chapitre comporte une première section relative à la conception générale de cette

application. Cette section décrit deux solutions envisagées et justifie le choix de la solution retenue,

et par suite, décrit la décomposition de l’application en paquetages et les dépendances entre eux. La

deuxième section décrit la conception détaillée de la solution retenue suivant une approche orientée

objet. La dernière section décrit la base de données utilisée pour le stockage des informations

obtenues à partir des fichiers « log ».

I- Conception générale

1. Solutions envisagées  et choix d’une solution

Notre conception doit prévoir deux transformations de données. La première transformation

permet le passage des données du fichier « log » sous leur format brut vers une forme adaptée aux

calculs ultérieurs. La deuxième transformation reprend les résultats de la première transformation et

permet de déduire les résultats à afficher sous une forme facile, intelligible et conviviale.

La difficulté de ce travail réside dans la navigation entre les différentes statistiques. La

navigation consiste en la transition d’une statistique à une autre en se basant sur un critère déjà fixé

dans une phase de navigation préalable. Par exemple, après la consultation des statistiques

concernant les utilisateurs les plus actifs, un des utilisateurs est sélectionné et il est alors possible

d’obtenir d’autres statistiques comme les sites les plus visités ou le débit généré relatifs à

l’utilisateur sélectionné. Ainsi nous obtenons la liste des sites les plus visités par l’utilisateur

sélectionné.

Nous avons envisagé deux solutions possibles qui diffèrent essentiellement au niveau de

l’organisation des flots de données entre les modules et la manière d’assurer la navigation.

14

Page 15: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Une première solution consiste à lire le fichier Access.log, stocker les résultats dans des

variables en mémoire centrale et ensuite passer à la génération des statistiques qui seront affichées

par la suite en effectuant des calculs sur ces variables.

Cette solution présente plusieurs inconvénients. Parmi les problèmes qui se posent, la lecture

du fichier « log » de nouveau à chaque fois qu’on veut générer une nouvelle statistique ou tracer

une nouvelle courbe. D’autre part, le nombre de variables intermédiaires en mémoire centrale risque

d’être important étant donné que l’application permet de consulter les statistiques de manière

restreinte à différents critères ainsi qu’elle offre des possibilités de navigation variées. Notons enfin

que la sélection des données à utiliser pour obtenir les résultats à afficher, selon un ou plusieurs

critères, ne peut pas se réaliser facilement en travaillant directement sur ces variables.

Une deuxième solution consiste en l’utilisation d’une base de données pour y stocker les

résultats du « parsing » du fichier. Dans ce schéma, tous les calculs et la génération des statistiques

seront faits à partir de la base.

Cette solution permet de remédier aux problèmes rencontrés dans la solution précédente en

exploitant le fichier « log » une seule fois et en utilisant des variables intermédiaires permettant

d’accélérer certains calculs pour la navigation sans revenir systématiquement à la base de données.

En comparant ces deux solutions, nous avons opté pour la deuxième vu les avantages qu’elle

offre, et nous avons choisi une conception orientée objet pour la développer.

2. Décomposition de l’application

Pour pouvoir trouver une bonne décomposition pour notre application, nous devons

commencer par tracer les grandes lignes de notre travail. Nous allons commencer par lire le fichier

Access.log, en extraire les informations nécessaires et les stocker convenablement dans une base de

données, ensuite, nous allons exploiter ces informations pour la génération des statistiques lors de la

navigation.

15

Page 16: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Ainsi nous distinguons trois grands paquetages dans notre travail : le premier est celui

responsable de l’analyse et de l’extraction des données utiles du fichier « log » qu’on appellera

«parserlog», la deuxième, « basededonnees », est le paquetage responsable de la gestion de la base

de données et de l’exécution des requêtes. Le dernier paquetage appelé «calculaffichstat » a pour

rôle la génération et l’affichage des statistiques ainsi que la navigation.

Maintenant que nous avons distingué ces trois paquetages, nous allons nous concentrer sur la

communication et les données échangées entre elles. Nous avons essentiellement deux

communications comme le décrit la figure 2.

Figure 2 : La communication entre les différentes parties

La première est celle entre le paquetage « parserlog» et le paquetage « basededonnees ».

Cette communication traduit le stockage des informations extraites du fichier « log » dans la base de

données. Pour s’y faire, le paquetage « parserlog » fera appelle à une méthode connecter() pour se

connecter à la base de données, une méthode insererEnreg() du paquetage « basededonnees »

permettant l’insertion dans la base d’un enregistrement lu à partir du fichier « log » et la méthode

deconnecter() pour se déconnecter en fin des insertions.

La deuxième communication est celle reliant les deux paquetages « basededonnees » et

« calculaffichstat ». Pour la génération des statistiques, le paquetage « calculaffichstat » appelle la

méthode connecter() de « basededonnees », ensuite la méthode executer() pour l’exécution des

requêtes appropriées à chaque statistique, cette méthode renvoie des enregistrements de la base et

enfin la méthode deconnecter() pour la déconnexion.

16

Page 17: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

II- Conception détaillée

Dans cette partie, nous allons détailler les paquetages décrits dans la conception générale un

par un, à savoir les classes présentes dans chaque paquetage ainsi que les méthodes de chaque

classe.

Pour le paquetage « parserlog », nous avons une seule classe Parser. Cette classe permet la

lecture du fichier Access.log ligne par ligne, les décompose en champs séparés et ensuite nous les

insérons dans la base en utilisant la méthode insererEnreg() du paquetage « basededonnees » pour

avoir ainsi une nouvelle représentation du fichier « log » dans la base et plus précisément dans une

table générale appelée tableLog.

Lors de l’analyse lexicale du fichier « log », deux solutions se présentent. Dans la première

solution, chaque ligne lue à partir du fichier est stockée dans une variable intermédiaire comme

chaîne de caractères, ensuite elle est découpée champ par champ en tenant compte des délimiteurs

qui sont les espaces et dont le nombre diffère d’un champ à un autre. Ces champs seront stockés par

suite dans des variables intermédiaires avant qu’ils ne soient passer en paramètre à la méthode

insererEnreg() responsable de l’insertion de la ligne dans la base de données.

L’inconvénient de cette solution est que le traitement sur les chaînes de caractères prend

beaucoup de temps et face à un fichier « log » volumineux, l’analyse lexicale risque de prendre

plusieurs dizaines de minutes.

La deuxième solution consiste à récupérer une ligne du fichier « log », éliminer tous les

espaces superflus et stocker ensuite la ligne obtenue dans un tableau de chaînes de caractères en

s’appuyant sur l’existence d’un délimiteur unique entre tous les champs. Enfin, on passe le contenu

du tableau à la méthode insererEnreg() pour l’insertion dans la base.

Cette solution nous épargne de longs traitements sur les chaînes de caractères et par suite

nous offre un énorme gain en temps lors de l’analyse lexicale par rapport à la première solution.

17

Page 18: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

En ce qui concerne le stockage dans la base, nous avons opté pour l’insertion des données au

fur et à mesure qu’on lit le fichier, au lieu de lire le fichier tout entier et ensuite insérer les données

dans la base, parce que ceci nous évitera d’utiliser des variables intermédiaires et par suite optimiser

le temps de remplissage de la base.

Pour le paquetage « basededonnees », nous avons besoin d’une classe qui gère la

connexion et la déconnexion à la base de données, c’est la classe GestionBD. Deux autres classes

héritent de celle-ci : la classe AdminBD et la classe Requêtes. Ces deux classes utilisent les

méthodes connecter() et déconnecter() de la classe GestionBD d’où l’existence de l’héritage.

La classe AdminBD permet d’apporter des modifications sur le contenu de la base de

données c’est à dire qu’elle est responsable de l’insertion dans la base de nouveaux enregistrements

via la méthode insererEnreg() ainsi que de la suppression de la base par le billet de la méthode

vider(). La classe Requêtes est celle responsable de l’interrogation de la base. Elle contient la

méthode executer() qui assure l’exécution des requêtes qui lui ont été passées en paramètres et

renvoie le résultat des requêtes aux classes qui ont invoqué cette méthode.

Une autre classe figure dans le paquetage « basededonnees », c’est la classe

GenererTableStat. Cette classe permet le remplissage des tables auxiliaires dans notre base de

données à partir de la table principale TableLog. Ces tables auxiliaires sont du nombre de six : la

table Utilisateurs, la table Sites, la table Postes, la table Protocoles, la table Cache et la table

UtilisationReseau. Ces tables ont le rôle de générer les statistiques les plus utilisées ce qui se

traduira par la suite par un gain de temps lors de la navigation. Elles seront décrites plus en détail

dans la partie conception de la base de données. Chaque méthode de cette classe sera responsable

du remplissage d’une table précise : GenererStatUtilisateurs() remplit la table Utilisateurs,

GenererStatSites() remplit la table Sites, GenererStatPostes() remplit la table Postes,

GenererStatProtocoles() remplit la table Protocoles, GenererStatCache() remplit la table Cache

et enfin GenererStatUtilisationReseau() remplit la table UtilisationReseau.

18

Page 19: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Figure 3 : La description du paquetage « basededonnees »

Enfin, le troisième et dernier paquetage de notre application, c’est le paquetage

« calculaffichstat ». Il est responsable du calcul des statistiques via la classe CalculStat qui utilise

la méthode genererStatsPrincipaux() qui permet de récupérer les statistiques déjà générées dans

les tables auxiliaires de notre base et la méthode genererStat() pour le calcul des statistiques

nécessaires lors la navigation et la méthode genererGraphe() qui permet la génération des graphes

des différentes statistiques. Cette méthode fait appelle à la classe Graphe pour générer différents

graphiques correspondant aux statistiques affichées en utilisant le graphe le mieux adapté pour

chaque statistique. La classe Graphe contient trois méthodes qui génère chacune un type de

graphe : la méthode GrapheBarChart3D() génère un histogramme comme c’est le cas pour les

statistiques concernant les postes, les utilisateurs, les protocoles ou encore les sites, la méthode

GraphePieChart3D() génère un  « pie » utilisé pour les statistiques concernant l’utilisation de la

cache et Enfin, la méthode GrapheTimeXYChart() qui génère des courbes pour les statistiques

portant sur l’utilisation du réseau.

La classe CalculStat joue un grand rôle dans le fonctionnement de la navigation. Pour s’y

faire, il faut à chaque fois récupérer la trace du passage entre les différentes statistiques. Ce passage

se fait en échangeant des informations entre les différentes classes de calcul de statistiques pour

permettre leurs communications avec la base de données afin de pouvoir récupérer les résultats

souhaités.

19

Page 20: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Une première solution consiste à définir des chemins de navigation statiques c’est à dire que

pour aboutir à une statistique bien précise, il faut suivre à chaque fois le même chemin de

navigation ce qui a pour effet de limiter l’utilisateur à quelques chemins prédéfinis et de réduire les

possibilités de naviguer librement entre les statistiques.

La deuxième solution consiste à prévoir un mécanisme qui permet de garder la trace de la

navigation. Ce mécanisme doit nous permettre de passer d’une statistique déjà calculée à n’importe

quelle statistique souhaitée en prenant différents chemins de navigation et pouvant boucler

infiniment sur toutes les statistiques tout en sauvegardant la trace du chemin parcouru. Ce

mécanisme doit aussi nous permettre de revenir à n’importe quelle statistique déjà calculée,

récupérer la trace qui a abouti au calcul de cette dernière et de calculer à partir d’elle d’autres

statistiques. Par exemple, si on avait des statistiques sur les utilisateurs les plus actifs calculées

antérieurement et qu’on veut savoir, pour un utilisateur, quels sont les sites qu’il a le plus visité et

puis pour ce même utilisateur on veut savoir sur quels postes il a demandé l’un des sites obtenus de

la statistique précédente, et après, on veut revenir aux utilisateurs les plus actifs et choisir un autre

utilisateur et calculer d’autres statistiques le concernant, ce scénario doit être réalisable avec notre

mécanisme. Cet exemple est détaillé davantage dans la « figure 4 ».

Figure 4 : Un exemple de navigation

Pour mettre en œuvre cette solution, nous allons concevoir une classe mère CalculStat et six

autres classes Sites, Utilisateurs, Postes, Protocoles, Cache, UtilisationRéseau qui héritent de

celle-ci. Cette dernière classe contient deux méthodes abstraites genererStat() et genererGraphe()

qui prennent comme paramètres des chaînes de caractères servant à tracer le chemin de navigation

entre les différentes statistiques. Ces deux méthodes abstraites sont implémentées dans les six

classes qui héritent de CalculStat. Pour naviguer entre les statistiques, il suffit d’invoquer l’une des

20

Page 21: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

méthodes de cette dernière classe en lui passant la condition de navigation pour qu’elle soit

exécutée dans l’une des six classes filles et ainsi le passage d’une classe à une autre sera assuré.

Le paquetage « calculaffichstat » contient aussi une classe Rapport responsable de la

génération de rapports contenant les différentes statistiques. Cette classe contient une méthode

AjouterParagraphe() qui permet d’ajouter des titres de paragraphes et des commentaires dans le

rapport, une méthode AjouterTableau() qui ajoute une statistique au rapport, une méthode

AjouterGraphe() qui ajoute un graphe au rapport et enfin la méthode GenererRapport() qui

permet de générer le rapport final sous le format PDF.

Enfin, la dernière classe présente dans le paquetage « calculaffichstat » est la classe

SquidLogAnalyserFrame qui va générer l’interface graphique de notre application et qui va faire

appel aux différentes classes assurant le fonctionnement de notre application.

Figure 5 : La description du paquetage « Calculaffichstat »

21

Page 22: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Suite à cette description détaillée des différents paquetages, il nous est maintenant possible

d’en déduire le diagramme de classe de notre application décrit dans la figure 5.

Figure 6 : Le diagramme de classe

22

Page 23: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

2.

III-Conception de la base de données

Nous allons commencer par stocker toutes les informations extraites du fichier Access.log

dans une seule table principale appelée TableLog de sorte qu’on ait une représentation fidèle du

fichier « log » et en même temps des enregistrements mieux adaptés et nos calculs. Cette table

comporte les champs num, dates, duree, nomPoste, traitementCache, bytes, reqmeth, nomProtocole,

url, nomUtilisateur, hiercode, type.

Ensuite nous allons avoir d’autres tables en relation avec la première. Ces tables contiennent

les statistiques les plus utilisées par notre application.

La première statistique concerne les sites les plus visités. Elle est stockée dans la table Sites

qui contient comme champs l’url visité, le volume total téléchargé pour ce site, le volume chargé à

partir de la cache et celui non chargé de la cache.

La deuxième statistique concerne les utilisateurs les plus actifs. Elle est stockée dans la table

Utilisateurs qui contient comme champs le nom de l’utilisateur, le nombre de sites qu’il a consulté

et le volume total téléchargé.

La troisième statistique concerne les postes les plus actifs. Elle est stockée dans la table

Postes qui contient comme champs le nom du poste, le nombre de sites consulté à partir de ce poste

et le volume total téléchargé.

La quatrième statistique concerne les protocoles les plus utilisés. Elle est stockée dans la

table Protocoles dont les champs sont le nom du protocole utilisé et le volume total téléchargé en

utilisant ce protocole.

La cinquième statistique concerne l’utilisation de la cache. Elle est stockée dans la table

Cache qui a comme premier champ le code résultat du Proxy Squid et comme deuxième champ le

volume téléchargé suite à une requête générant ce code.

23

Page 24: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

24

Page 25: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

La dernière statistique est celle de l’utilisation du réseau. Elle est stockée dans la table

UtilisationReseau qui contient comme premier champ la date et l’heure d’une requête et comme

deuxième champ le débit relatif à cette requête.

Figure 7 : Modèle physique de données

25

Page 26: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Chapitre4: Réalisation

Dans ce chapitre, nous présentons le travail réalisé, le choix de la plate forme utilisée

ainsi que l’environnement de développement, nous commentons les différentes interfaces

graphiques ainsi que quelques courbes et statistiques obtenues.

I- L’environnement de développement

1. Environnement de développement 

o Outil de spécification et conception :

Notre choix s’est porté sur le logiciel Power AMC version 9.5.1 qui est un produit Sybase

opérant sur la plateforme Windows. Cet outil supporte tous les modèles du langage unifié de

modélisation UML en couvrant toutes les étapes du cycle de développement du logiciel.

o Langage de programmation :

Nous avons opté pour le langage de programmation JAVA. Ce choix se justifier par la

simplicité avec laquelle il permet d’analyser et de traiter efficacement du texte structuré. En effet,

Java met en œuvre plusieurs astuces de programmation qui facilite l’extraction des informations

d’un fichier historique (log) ou d’une base de données. S’ajoute à cet argument, la richesse de ses

bibliothèques graphiques, la portabilité et la fiabilité de ce langage.

o Outil de développement :

Le choix de l’environnement de développement s’est porté sur le logiciel Sun Java Studio

Enterprise 8 ; la principale plateforme de développement pour le système Sun Java Enterprise et

les suites logicielles Sun Java System.

Java Studio Enterprise 8 nous permet de concevoir et de développer des applications de

classe d'entreprise de haut calibre, en exploitant son éditeur graphique on peut aisément développer

les interfaces relatives à nos programmes en leurs donnant une meilleure visibilité et plus de

compréhension du coté de l’utilisateur.

26

Page 27: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

o Système de gestion de base de données :

Pour stocker nos données nous avons choisie d’utiliser le SGBD MySQL.

MySQL est la base de données open source la plus populaire au monde grâce à sa

performance, sa haute fiabilité et sa simplicité d'utilisation. On la trouve dans plus de 8 millions

d’installations, dans les grandes entreprises transnationales comme au sein d’applications

embarquées spécialisées.

Non seulement MySQL est la base de données open source la plus populaire au monde, mais

elle est également devenue le choix de prédilection de toute une nouvelle génération d'applications

construites sur la plate-forme LAMP (Linux, Apache, MySQL, PHP / Perl / Python.) MySQL

fonctionne sur plus de 20 plates-formes, notamment Linux, Windows, OS/X, HP-UX, AIX ou

Netware, une polyvalence qui convient parfaitement à notre situation puisque notre logiciel opère

sous Linux et Windows.

2. Environnement matériel 

Processeur Intel® Core(TM)2 fréquence d’horloge 1.6 GHz

2 GO de RAM.

80 GO de taille de stockage de disque.

Ecran 15,4 pouces.

27

Page 28: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

3.

II- Processus d’analyse de fichier log du proxy Squid

La plus grande partie de l’application est celle de la navigation entre les différentes

statistiques qu’on arrive à dégager à partir du fichier Access.log. Dans la partie ci-dessous on

présente les enchaînements à suivre ainsi que quelques imprimes écrans pour donner un aperçu sur

l’utilisation de notre analyseur.

1. Interface d’accueil

L’interface d’accueil est la page de garde de notre outil qui contient son menu principal et qui

va donner l’accès soit à la configuration soit aux statistiques.

2. Configuration

2.1- Configuration Système

Pour définir les paramètres de configuration :

Cliquer sur le bouton de recherche dans le panneau «chemin du fichier log ».

Sélectionner le fichier « log » à analyser.

La figure 8 illustre la configuration des paramètres système de notre application.

28

Page 29: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Figure 8 : La communication du fichier « log »

2.2- Configuration des statistiques

Pour définir les paramètres de l’affichage des statistiques :

Saisir un nombre qui correspond à la taille maximale des tables statistiques à générer. Saisir un nombre qui correspond à la taille maximale des graphiques à afficher.

Pour définir les paramètres de filtrage :

Choisir le critère de filtrage en cochant l’une des cases « Par utilisateur », « Par poste » ou

« Par date ». Saisir un nom d’utilisateur si la case « Par utilisateur » est cochée. Saisir un nom de poste si la case « Par poste » est cochée. Définir un intervalle de temps si la case « Par date » est cochée.

La figure 9 illustre la configuration des paramètres d’affichage des statistiques et le filtrage.

29

Page 30: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Figure 9 : La configuration des statistiques de l’analyseur

3. Statistiques

Après la définition des paramètres d’analyse du fichier « log » il reste à :

Cliquer sur le bouton « statistiques » pour passer à l’interface relative aux statistiques. Cliquer sur le bouton « action » puis « générer statistiques » pour procéder à la génération

des statistiques déduites du fichier « log » et qui concernent les url, les utilisateurs, les

postes, les protocoles, l’utilisation de la cache et l’utilisation du réseau. Cliquer sur l’un des boutons de gauche, à savoir « url », « utilisateurs », « postes »,

« protocoles », « utilisation du cache » ou « utilisation du réseau », pour passer à l’interface

des statistiques relative à ce choix.

La figure 10 et la figure 11 illustrent le cas du choix des statistiques propres aux URL.

30

Page 31: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Figure 10 : La table de statistiques sur les sites les plus visités

Figure 11 : Le graphe des sites les plus visités

31

Page 32: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

La figure 12 montre un cas d’utilisation de l’analyseur ou l’utilisateur aura choisi de visualiser

le taux d’utilisation du cache en camembert (pie3d).

On distingue bien la légende qui explique la signification de chaque couleur avec le volume

exacte.

Elle représente une possibilité parmi plusieurs autres qui seront mis à la disposition de

l’utilisateur pour voir au mieux la répartition du trafic.

Figure 12 : Le graphe de l’utilisation du cache

L’utilisation du réseau peut être représentée par une table et un graphe traçant le débit en

fonction du temps (par heure, par jour et par mois).

La figure 13 illustre l’utilisation générale du réseau par heure.

32

Page 33: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Figure 13 : Le graphe d’utilisation du réseau par heure

Les deux figures 14 et 15 reflètent un scénario possible de navigation entre les différentes

statistiques : en partant des sites les plus visités, on sélectionne un site web dont le suivi nous parait

important, par exemple le site « www.frameip.com » à partir duquel on affiche les utilisateurs les

plus actifs, et on suit la navigation pour déterminer le taux d’utilisation du cache pour ce site et pour

un utilisateur particulier (par exemple l’utilisateur le plus actif).

Par ce mécanisme de navigation on arrive à affiner notre analyse pour aboutir à des

statistiques claires, pertinentes et utiles pour l’administrateur du réseau.

33

Page 34: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Figure 14 : Le mécanisme de navigation

Figure 15 : Le graphe de l’utilisation du cache pour « bessem003 » pour le site « www.frameip.com »

34

Page 35: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

4.

4. Rapport

Une autre fonctionnalité offerte par notre outil d’analyse est la génération de rapports détaillés

des activités de l’utilisateur final de l’outil, en effet au fur et à mesure de la navigation entre les

différentes statistiques, les graphes et les tables sont ajoutés , à la demande de l’utilisateur, au

rapport qu’on peut finaliser en cliquant sur le bouton « Rapport ».

La figure 16 représente un exemple de rapport sous format PDF de l’activité de

l’administrateur.

Figure 16 : Le rapport d’activités détaillé

35

Page 36: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

III-Test et validation

Les résultats des rapports et des statistiques ont été vérifiés et validés quant à leur consistance

et exactitude ainsi que des plusieurs tests ont été réalisés pour vérifier le bon fonctionnement de

l’analyse lexicale du fichier « log » et surtout le bon fonctionnement de la navigation et l’exactitude

de ses résultats.

IV- Chronogramme du projet

La figure 17 représente les durées des différentes taches effectuées pendant ce projet durant la

période de trois mois.

N°Semaine 1 2 3 4 5 6 7 8 9 1

0

1

1

Documentation

Spécification

conception

réalisation

Test et validation

Rédaction du rapport

Figure 17 : Le chronogramme du projet

5.

V- Conclusion

On rappel brièvement que pour mettre en œuvre notre prototype, on a utilisé la méthodologie

UML (Unified Modeling Language) dans les phases de spécification et conception, le système de

gestion de bases de données MySQL pour la réalisation de la base de données et le langage JAVA

sous Sun Java Studio Enterprise 8 pour le développement de notre prototype.

36

Page 37: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Conclusion générale

Pour conclure, nous rappelons que le but de notre projet est de développer une application

permettant d’analyser les fichiers logs de SQUID (dans notre cas c’est le fichier « access.log ») et

de permettre à l’administrateur d’avoir une idée sur l’état du trafic et de pouvoir évaluer le

fonctionnement du serveur par la mise en place d’un mécanisme de navigation permettant d’affiner

l’analyse.

Nous sommes parvenus en fin de compte à achever notre application dans les délais malgré

quelques problèmes que nous avons rencontrés et que nous avons pu résoudre grâce à notre travail

en groupe.

Ce projet a eu plusieurs apport bénéfiques et a présenté une compétente occasion pour

mettre en évaluation ce que nous avons appris lors de nos deux premières années, nous citons ci-

dessous quelques apports :

Appliquer ce que nous avons appris en matière de génie logiciel. Apprendre et appliquer le langage de spécification et de conception UML et d’améliorer nos

connaissance quant aux cycles de développement du logiciel. Se familiariser davantage à la manipulation des bases de données. S’adapter au langage de programmation Java, et maîtriser le puissant outil Sun Java Studio

Enterprise 8.

Enfin, l’outil qu’on a réalisé reste une plateforme de départ qui laisse des grandes

possibilités d’extension et d’amélioration surtout pour intégrer la fonction corrélation entre les

mesures statistiques.

37

Page 38: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Neto graphie

[Net1] http://www.squid.org/

[Net2] http://awstats.sourceforge.net/

[Net3] http://www.sawmill.net/

[Net4] http://www.modlogan.org/

38

Page 39: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Annexe

I- Présentation détaillée du fichier log de Squid 

Cette annexe présente une explication détaillée des champs code/status et peerstatus/peerhost

du fichier log de Squid.

1. Le champ code/status 

Il comprend deux valeurs séparées par "/".

La première est un des codes de résultat de Squid. Ces codes indiquent comment Squid traite

les requêtes de ses clients. Ces codes font référence au protocole HTTP (ce sont les codes TCP) ou

ICP (ce sont les codes UDP). Voici une liste de quelques codes :

o TCP_HIT qui montre qu'une copie valide de l'objet demandé par le client mandataire est

en cache disque.

o TCP_MISS qui indique le contraire.

o TCP_REFRESH_HIT qui indique qu'une copie valide assez ancienne de l'objet demandé

est en mémoire cache. Toutefois, la comparaison que Squid a effectuée avec l'objet

originel a abouti à un code de résultat HTTP 304 (voir plus bas).

o TCP_REF_FAIL_HIT qui indique qu'un objet périmé, présent dans le cache, est donné au

client parce que la recherche de l'objet originel n'a rien donné.

o TCP_REFRESH_MISS qui signifie que l'objet demandé est en mémoire cache mais

périmé. L'objet originel a donc été téléchargé par Squid.

o TCP_CLIENT_REFRESH_MISS qui indique que l'objet n'est pas en mémoire cache.

o TCP_IMS_HIT qui montre qu'un client mandataire a émis une requête pour un objet

originel alors qu'il est en mémoire cache et récent.

o TCP_SWAPFAIL_MISS qui indique un objet supposé être dans la mémoire cache mais

inaccessible.

39

Page 40: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

o TCP_NEGATIVE_HIT qui indique un objet inaccessible suite à un code de résultat HTTP

404 (voir plus bas).

o TCP_MEM_HIT qui montre un objet non seulement présent au sein de la mémoire cache

disque mais aussi en mémoire vive, ce qui a évité un accès disque.

o TCP_DENIED qui indique que l'accès à un objet est refusé au client.

o TCP_OFFLINE_HIT qui indique que l'objet demandé par le client est en mémoire cache

mais que Squid n'est pas connecté à la toile. En mode hors connexion, Squid ne valide

aucun objet (pas de comparaison possible).

o UDP_HIT qui indique la même chose que le code TCP_HIT mais pour le protocole ICP.

o UDP_MISS

o UDP_DENIED

o UDP_INVALID qui indique une requête ICP invalide.

o UDP_MISS_NOFETCH

o NONE qui indique une erreur dans la réalisation d'une requête par Squid.

La seconde est un des codes de résultat HTTP définis par la RFC 2616, à l'exception des

codes 0 et 600 ajoutés par les développeurs de Squid. Ces codes bien connus sont retournés en

réponse aux requêtes HTTP sur la toile. Parmi les plus connus :

o 301 Moved Permanently

o 302 Moved Temporarily

o 303 See Other

o 304 Not Modified

o 400 Bad Request

o 401 Unauthorized

o 402 Payment Required

o 403 Forbidden

o 404 Not Found

o 405 Method Not Allowed

o 406 Not Acceptable

o 407 Proxy Authentication Required

o 408 Request Timeout

40

Page 41: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

o 414 Request URI Too Large

o 415 Unsupported Media Type

o 500 Internal Server Error

o 501 Not Implemented

o 502 Bad Gateway

o 503 Service Unavailable

o 504 Gateway Timeout

o 505 HTTP Version Not Supported

o 600 Squid header parsing error

2. Le champ peerstatus/peerhost 

Il contient deux valeurs séparées par "/".

La première est un code de hiérarchie qui explique comment la requête a été traitée par

Squid (en passant par un autre serveur mandataire ou directement...). On peut citer parmi les codes

de hiérarchie :

o NONE qui signifie qu'il n'y a pas d'information de hiérarchie qui concerne la requête en

cause, ce qui est vrai pour toute une série de requêtes (voir documentation).

o DIRECT qui indique que c'est l'objet originel qui a été téléchargé.

o SIBLING_HIT qui montre que l'objet a été retiré d'un cache pair qui a répondu par le code

de résultat UDP_HIT.

o PARENT_HIT qui montre que l'objet a été retiré d'un cache parent qui a répondu par le

code de résultat UDP_HIT.

o DEFAULT_PARENT qui indique que le cache parent a été choisi parce qu'il était le

serveur mandataire par défaut du fichier de configuration, aucune requête ICP n'a été

envoyée.

o SINGLE_PARENT

o FIRST_UP_PARENT

o NO_PARENT_DIRECT

o FIRST_PARENT_MISS

o CLOSEST_PARENT_MISS

41

Page 42: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

o CLOSEST_PARENT qui indique que la sélection du cache parent est basée sur le temps de

réponse le plus court.

o CLOSEST_DIRECT

o NO_DIRECT_FAIL qui montre que l'objet n'a pas pu être accédé à cause de la

configuration du pare-feu.

o SOURCE_FASTEST qui indique que l'objet a été téléchargé à partir de son site d'origine

parce que la réponse au Ping était plus rapide.

o ROUNDROBIN_PARENT

o CACHE_DIGEST_HIT

o CD_PARENT_HIT

o CD_SIBLING_HIT

o NO_CACHE_DIGEST_DIRECT

o CARP

o ANY_PARENT

o INVALID CODE

La seconde est le nom d’hôte de la machine à laquelle Squid a demandé l'objet. Ce peut être le

site d'origine de l'objet ou un serveur mandataire pair ou parent.

Lorsque le temps imparti pour les requêtes est arrivé à expiration avant que l'objet soit trouvé,

le terme "TIMEOUT_" précède la première valeur. Exemples : "NONE/-" ou bien

"DIRECT/www.ensi.rnu.tn".

42

Page 43: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

43

Page 44: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Table des matières

Introduction générale..................................................................................................1

I- Cadre du projet :............................................................................................................................1

II- Travail demandé :..........................................................................................................................1

III- Contexte et problématique :..........................................................................................................2

IV- Organisation du rapport :..............................................................................................................2

Chapitre 1 : Etude préalable......................................................................................3

I- Etude de l’existant.........................................................................................................................3

1. Présentation du serveur Proxy Squid......................................................................................................3

2. Présentation du fichier « log » de Squid.................................................................................................4

2.1- Définition et utilité des fichiers « log »...................................................................................................4

2.2- Le fichier Access.log...............................................................................................................................4

II- Etude de quelques outils d’analyse de fichiers « log » de Squid..................................................6

III- Conclusion.....................................................................................................................................7

Chapitre 2 : Analyse et spécification des besoins......................................................8

I- Besoins fonctionnels.....................................................................................................................8

II- Besoins non fonctionnels..............................................................................................................9

III- les cas d’utilisation du système.....................................................................................................9

IV- Conclusion...................................................................................................................................11

Chapitre 3 : Conception du logiciel..........................................................................12

I- Conception générale....................................................................................................................12

1. Solutions envisagées  et choix d’une solution.......................................................................................12

2. Décomposition de l’application............................................................................................................13

II- Conception détaillée....................................................................................................................15

III- Conception de la base de données...............................................................................................21

Chapitre4: Réalisation..............................................................................................23

I- L’environnement de développement...........................................................................................23

1. Environnement de développement........................................................................................................23

2. Environnement matériel.......................................................................................................................24

44

Page 45: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

II- Processus d’analyse de fichier log du proxy Squid.....................................................................25

1. Interface d’accueil.................................................................................................................................25

2. Configuration........................................................................................................................................25

2.1- Configuration Système..........................................................................................................................25

2.2- Configuration des statistiques...............................................................................................................26

3. Statistiques............................................................................................................................................27

4. Rapport..................................................................................................................................................32

III- Test et validation.........................................................................................................................33

IV- Chronogramme du projet............................................................................................................33

V- Conclusion...................................................................................................................................33

Conclusion générale...................................................................................................34

Neto graphie...............................................................................................................35

Annexe........................................................................................................................36

I- Présentation détaillée du fichier log de Squid.............................................................................36

1. Le champ code/status............................................................................................................................36

2. Le champ peerstatus/peerhost...............................................................................................................38

45

Page 46: rapport stage - analyseur fichier log

Projet Deux Modules

Ecole Nationale des Sciences de l’InformatiqueENSI

Table des figures

Figure 1 : Le diagramme de cas d’utilisation............................................................................10Figure 2 : La communication entre les différentes parties........................................................14Figure 3 : La description du paquetage « basededonnees »......................................................17Figure 4 : Un exemple de navigation........................................................................................18Figure 5 : La description du paquetage « Calculaffichstat »....................................................19Figure 7 : Modèle physique de données...................................................................................22Figure 8 : La communication du fichier « log ».......................................................................26Figure 9 : La configuration des statistiques de l’analyseur.......................................................27Figure 10 : La table de statistiques sur les sites les plus visités................................................28Figure 11 : Le graphe des sites les plus visités.........................................................................28Figure 12 : Le graphe de l’utilisation du cache.........................................................................29Figure 13 : Le graphe d’utilisation du réseau par heure...........................................................30Figure 14 : Le mécanisme de navigation..................................................................................31Figure 15 : Le graphe de l’utilisation du cache pour « bessem003 » pour le site « www.frameip.com »...............................................................................................................31Figure 16 : Le rapport d’activités détaillé.................................................................................32Figure 17 : Le chronogramme du projet...................................................................................33

46