Utilisation de journaux IIS 5.0

Sur cette page

Utilisation de journaux IIS 5.0 Utilisation de journaux IIS 5.0
Journalisation au format W3C Journalisation au format W3C
Importation de journaux dans SQL Server Importation de journaux dans SQL Server
Analyse des données du journal Analyse des données du journal
À propos de l'auteur À propos de l'auteur

Utilisation de journaux IIS 5.0

Par Ken Spencer

Cet article est extrait du numéro du printemps 2001 de Windows 2000 Magazine Quitter le site Microsoft Site en anglais.

Déplacez les données des journaux des sites Web vers une base de données SQL Server afin d'en faciliter l'analyse

Microsoft Internet Information Services (IIS) 5.0 enregistre les événements du serveur Web par défaut. Vous pouvez choisir de désactiver la journalisation ou d'ignorer les données enregistrées, mais vous souhaiterez plus probablement recueillir et analyser les données afin de mieux connaître la façon dont les utilisateurs utilisent votre site Web. Tout comme Internet Information Server (IIS) 4.0, IIS 5.0 vous permet de choisir parmi plusieurs formats de fichier d'enregistrement et vous permet d'enregistrer les informations dans un fichier ou directement dans une base de données. Ma méthode préférée de collecte des données consiste à enregistrer les fichiers au format de fichier journal étendu proposé par le consortium W3C (World Wide Web Consortium), puis d'importer les données des fichiers dans une base de données Microsoft SQL Server en vue de leur analyse. Dans les paragraphes qui suivent, je montre comment configurer un tel processus de journalisation et je détaille quelques différences mineures entre IIS 5.0 et IIS 4.0.

Journalisation au format W3C

Pour configurer la journalisation (qui est activée par défaut), vous utilisez ISM (Internet Services Manager) 5.0, qui fonctionne de façon semblable à ISM (Internet Service Manager) 4.0. Les opérations de journalisation de IIS 5.0 sont également assez semblables à celles de IIS 4.0 ; en outre, IIS 5.0 prend en charge les mêmes formats de journaux que IIS 4.0 :

  • format de fichier journal étendu W3C (exaammjj.log) ;

  • format de fichier journal Microsoft IIS (inaammjj.log) ;

  • National Center for Supercomputing ;

  • journal commun des applications (NCSA) ;

  • format de fichier (ncaammjj.log) ;

  • format de journalisation ODBC.

Le format du nom des fichiers journaux fermés quotidiennement est illustré entre parenthèses après le format du fichier. D'après l'article Microsoft «  W3SVC and IIS Log File Names Are Listed with NCSA Format in HTMLA  » Site en anglais, la documentation IIS 5.0 présente un préfixe incorrect pour les formats des noms de fichiers W3C et Microsoft IIS. Cependant, les noms sont corrects dans la documentation de mon système.

Une des différences entre IIS 5.0 et IIS 4.0 est que IIS 5.0 prend en charge l'option de journalisation ODBC uniquement dans les produits Windows 2000 Server, et non dans Win2K Professionnel. Pour en savoir plus sur la journalisation IIS 4.0 et les quatre formats de journalisation, consultez l'article « Journalisation des événements dans IIS 4.0 », paru en mars 2001.

Le format de fichier journal étendu W3C est probablement le format le plus utilisé, dans la mesure où il vous permet d'enregistrer davantage d'informations que les autres formats et où il est flexible (c'est-à-dire que vous pouvez spécifier les informations que vous souhaitez enregistrer). Par défaut, la journalisation W3C de IIS 5.0 utilise l'heure UTC (Universal Time Coordinate), un nouveau nom qui représente la même heure que celle utilisée par défaut dans IIS 4.0, à savoir GMT (Greenwich Mean Time). Ainsi, IIS 5.0 utilise l'heure UTC plutôt que l'heure locale pour déterminer quand créer un nouveau fichier journal, et toutes les heures du fichier journal sont basées sur l'heure UTC. Vous souhaiterez peut-être utiliser l'heure UTC si vous possédez plusieurs serveurs répartis sur plusieurs pays et que vous souhaitez les synchroniser sur une même heure.

Définition de l'heure pour la nomination et le roulement des fichiers journaux W3C

Figure 1 Définition de l'heure pour la nomination et le roulement des fichiers journaux W3C

Cependant, si tous vos serveurs se trouvent dans un même emplacement, vous préférerez probablement utiliser l'heure locale. IIS 5.0 vous offre un moyen simple de préciser que vous souhaitez utiliser l'heure locale pour la nomination et le roulement des fichiers journaux. Ouvrez ISM, cliquez sur le serveur approprié, cliquez avec le bouton droit sur le site Web approprié, puis cliquez sur Propriétés. Cliquez sur l'onglet Site Web, assurez-vous que le format W3C est sélectionné, puis cliquez sur Propriétés. Sous l'onglet Propriétés générales, illustré figure 1, activez la case à cocher Utilisez l'heure locale pour la désignation et la substitution du fichier. Vous pouvez utiliser l'heure locale du système dans IIS 4.0 Service Pack 4 (SP4) ou ultérieur, mais pour cela, vous devez éditer le Registre.

Sélection des propriétés W3C pour le journal

Figure 2 Sélection des propriétés W3C pour le journal

La figure 2 illustre la fenêtre permettant de choisir quelles propriétés étendues du format W3C vous souhaitez enregistrer. Cette fenêtre IIS 5.0 affiche les propriétés sous forme d'arborescence, au lieu de la liste fixe utilisée par IIS 4.0. Le format IIS 5.0 affiche également entre parenthèses les noms des propriétés tels qu'ils apparaissent dans les fichiers journaux. Cette référence croisée est réellement utile lorsque vous devez comparer les entrées du journal avec les propriétés que vous avez choisi d'enregistrer.

Les propriétés étendues de IIS 5.0 sont pratiquement les mêmes que celles de IIS 4.0, à quelques exceptions près. La propriété État HTTP de IIS 4.0 est devenue État du protocole dans IIS 5.0, bien que la documentation IIS 5.0 mentionne le nom HTTP Status pour cette propriété. La propriété Host de IIS 5.0 est nouvelle et contient le nom du serveur. Si vous activez la propriété Traiter les données comptables pour un site Web IIS 5.0, le serveur Web affiche un ensemble complémentaire d'entrées W3C.

Tableau 1 Préfixes des noms de propriétés W3C

Préfixe
Action
s-
Actions serveur
c-
Actions client
cs-
Actions client vers serveur
sc-
Actions serveur vers client

Adapté de la section « Référence des propriétés de journalisation » de la documentation en ligne de IIS 5.0.

Tableau 2 Propriétés W3C

Champ
Aspect dans le journal
Description
Date
date
La date à laquelle l'activité a eu lieu.
Heure
time
L'heure à laquelle l'activité a eu lieu.
Adresse IP du client
c-ip
L'adresse IP du client (navigateur ou initiateur HTTP) qui a accédé au serveur.
Nom d'utilisateur
c-username
Le nom de l'utilisateur authentifié qui a accédé au serveur. Le trait d'union représente les utilisateurs anonymes.
Nom du service
s-sitename
Le service Internet qui s'exécute sur l'ordinateur client et le numéro d'instance de l'ordinateur.
Nom du serveur
s-computername
Le nom du serveur sur lequel IIS 5.0 a généré l'entrée du journal.
Adresse IP du serveur
s-ip
L'adresse IP du serveur sur lequel IIS 5.0 a généré l'entrée du journal.
Port du serveur
s-port
Le numéro du port auquel le client est connecté.
Méthode
cs-method
L'action que le client tentait d'effectuer (par exemple, une méthode GET).
Ressource URI
cs-uri-stem
La ressource à laquelle le serveur a accédé (par exemple Default.htm).
Requête URI
cs-uri-query
La requête, le cas échéant, que le client tentait d'effectuer.
État du protocole
sc-status
L'état de l'action en termes de protocole HTTP.
État Win32
sc-win32-status
L'état de l'action en termes Win2K.
Octets envoyés
sc-bytes
Le nombre d'octets envoyés par le serveur.
Octets reçus
cs-bytes
Le nombre d'octets reçus par le serveur.
Durée écoulée
time-taken
La durée de l'action.
Version du protocole
cs-version
La version du protocole (HTTP, FTP) du client utilisé. Pour HTTP, cette valeur est HTTP 1.1 ou HTTP 1.0.
Hôte
cs-host
Le nom du serveur IIS 5.0.
Agent utilisateur
cs(User-Agent)
Le navigateur utilisé par le client.
Cookie
cs(Cookie)
Le contenu de tout cookie envoyé ou reçu.
Référant
cs(Referer)
Le site précédent qui a amené l'utilisateur au site actuel.

Adapté de la section « Référence des propriétés de journalisation » de la documentation en ligne de IIS 5.0.

La section « Référence des propriétés de journalisation » W3C de la documentation en ligne de IIS 5.0 est relativement confuse. J'ai reproduit les tableaux ici, en résolvant quelques erreurs, en modifiant un peu le texte et en changeant l'en-tête des colonnes afin de rendre les tableaux plus lisibles. Le tableau 1 définit les préfixes des noms de propriétés W3C tels qu'ils apparaissent dans les journaux. Chaque préfixe identifie le type d'action associé à la propriété. Le tableau 2 décrit les propriétés W3C et corrige les informations relatives à la propriété État du protocole. Le tableau 3 illustre les nouvelles propriétés Traiter les données comptables W3C et le tableau 4 décrit les valeurs de la propriété Événement de processus de Traiter les données comptables.

Tableau 3 Propriétés Traiter les données comptables W3C

Champ
Aspect dans le journal
Description
Événement de processus
s-event
L'événement qui a déclenché l'entrée dans le journal. Voir tableau 4 pour les noms et descriptions des événements.
Type de processus
s-proc-type
Le type de processus qui a déclenché l'événement, à savoir CGI (Common Gateway Interface), Application ou Tous.
Temps total Utilisateur
s-user-time
Le temps processeur total accumulé en mode utilisateur, en secondes, utilisé par le site au cours de l'intervalle actuel.
Temps total Noyau
s-kernel-time
Le temps processeur total accumulé en mode noyau, en secondes, utilisé par le site au cours de l'intervalle actuel.
Nombre total de défauts de page
s-page-faults
Le nombre total de références mémoire qui ont provoqué des défauts de page mémoire.
Nombre total de processus
s-total-procs
Le nombre total de scripts CGI et d'applications hors processus créés au cours de l'intervalle actuel.
Processus actifs
s-active-procs
Le nombre total de scripts CGI et d'applications hors processus qui s'exécutaient lors de l'enregistrement du journal par IIS 5.0.
Nombre total de processus terminés
s-stopped-procs
Le nombre total de scripts CGI et d'applications hors processus interrompus en raison de la limitation des processus au cours de l'intervalle actuel.

Adapté de la section « Référence des propriétés de journalisation » de la documentation en ligne de IIS 5.0.

Tableau 4 Événements Traiter les données comptables W3C

Nom de l'événement
Description
Site-Stop
Le site Web a été stoppé.
Site-Start
Le site Web a été démarré ou redémarré.
Site-Pause
Le site Web a été interrompu.
Periodic-Log
Cette entrée du journal est définie régulièrement selon un intervalle spécifié par l'administrateur.
Interval-Start
L'intervalle de réinitialisation a démarré.
Interval-End
L'intervalle de réinitialisation a été atteint et réinitialisé.
Interval-Change
L'administrateur a changé la valeur de l'intervalle de réinitialisation.
Log-Change-Int/Start/Stop
L'intervalle de journalisation a changé, un événement d'intervalle a eu lieu ou le site a été arrêté, démarré ou interrompu.
Eventlog-Limit
Un journal d'événements a été fermé parce qu'un script CGI ou une application hors processus a atteint la limite du journal définie par l'administrateur.
Priority-Limit
Un script CGI ou une application hors processus a été configuré(e) avec une priorité faible après avoir atteint la limite de priorité faible définie par l'administrateur.
Process-Stop-Limit
Un script CGI ou une application hors processus a été arrêté(e) après avoir atteint la limite d'arrêt de processus définie par l'administrateur.
Site-Pause-Limit
Le site Web a été interrompu parce qu'un script CGI ou une application hors processus a atteint la limite de pause du site définie par l'administrateur.
Eventlog-Limit-Reset
L'intervalle de réinitialisation a été atteint ou la limite Eventlog-Limit a été réinitialisée manuellement.
Priority-Limit-Reset
L'intervalle de réinitialisation a été atteint ou la limite Priority-Limit a été réinitialisée manuellement.
Process-Stop-Limit-Reset
L'intervalle de réinitialisation a été atteint ou la limite Process-Stop-Limit a été réinitialisée manuellement.
Site-Pause-Limit-Reset
L'intervalle de réinitialisation a été atteint ou la limite Site-Pause-Limit a été réinitialisée manuellement.

Adapté de la section « Référence des propriétés de journalisation » de la documentation en ligne de IIS 5.0.

Lorsque IIS 5.0 génère un fichier journal W3C, il incorpore au début du fichier un en-tête tel que celui illustré figure 3. La première ligne de l'en-tête identifie le type de serveur, la deuxième ligne identifie la version du fichier journal, la troisième ligne contient la date et l'heure de création du fichier journal par IIS 5.0, et la dernière ligne est une ligne d'en-tête délimitée par des espaces et contenant tous les champs. Soyez conscient que si vous modifiez les champs qui sont enregistrés, IIS 5.0 place un nouvel en-tête dans le fichier journal, puis continue d'ajouter des lignes représentant les nouveaux champs du fichier. Si vous importez des journaux dans une base de données, vous devrez vous assurer que la base de données contient tous les nouveaux champs des journaux.

En-tête du fichier journal W3C

Importation de journaux dans SQL Server

Si vous souhaitez pouvoir analyser les données des journaux, vous devez importer les données dans une base de données permettant l'exécution de requêtes. Si vous choisissez de travailler directement avec les données du journal généré par IIS 5.0, plusieurs options s'offrent à vous. Vous pouvez utiliser le format de journal ODBC (plutôt que le format W3C) pour enregistrer directement les données des sites Web dans SQL Server ou dans toute autre base de données compatible ODBC. Cependant, cette méthode écrit les entrées des journaux dans la base de données à mesure que les événements surviennent, de sorte qu'elle peut nécessiter des ressources importantes. Je préfère pour ma part configurer un package DTS (Data Transformation Services) dans SQL Server pour charger les fichiers journaux W3C. Le package lit un fichier texte contenant les données du journal généré par IIS 5.0 et importe les données dans SQL Server. Dans la mesure où le package s'exécute uniquement après que IIS 5.0 a fermé un journal, la mise à jour peut s'effectuer en mode batch et ainsi ne pas surcharger SQL Server ou IIS 5.0 avec des mises à jour chaque fois que IIS 5.0 enregistre une entrée.

Pour importer régulièrement les journaux W3C dans une base de données SQL Server à l'aide d'un package DTS, vous devez configurer une tâche dans SQL Server qui effectue plusieurs tâches. Vous pouvez planifier IIS 5.0 pour qu'il ferme le fichier journal à une certaine heure chaque jour, puis planifier l'exécution de la tâche immédiatement après la fermeture du fichier journal. La tâche doit d'abord copier le fichier journal fermé vers un fichier d'entrée spécifié, ou renommer le fichier journal avec le nom du fichier d'entrée.

Ensuite, la tâche doit supprimer les informations d'en-tête du fichier d'entrée, supprimant ainsi totalement les trois premières lignes d'en-tête ainsi que les entrées « #Fields: » de la quatrième ligne. Le fichier ne comporte désormais plus qu'une seule ligne d'en-tête, qui contient le nom de chaque champ. La figure 4 illustre les deux premières lignes (la ligne d'en-tête et une ligne d'enregistrement) d'un fichier d'entrée comportant six champs. Enfin, la tâche doit exécuter le package DTS pour charger les données du fichier d'entrée dans la base de données.

Deux premières lignes d'un fichier d'entrée

Pour que votre tâche puisse exécuter un package DTS pour charger les données dans une base de données SQL Server, vous devez d'abord créer la base de données ainsi que le package DTS. En réalité, vous pouvez laisser le package DTS créer la base de données, mais je vous recommande de créer la table vous-même. De cette façon, vous pouvez créer les colonnes avec les types de données appropriés, facilitant ainsi la requête sur les champs de date ou les champs numériques. Vous pouvez également nommer les colonnes avec vos propres noms et, à l'aide de DTS, mapper les noms du fichier entrant sur les colonnes correspondantes. J'ai créé une nouvelle base de données SQL Server 2000 nommée Iislogs pour les données du journal. Le listing 1 illustre les spécifications DDL (Data Definition Language) que j'ai écrites pour créer la table Inlogdata de la base de données Iislogs.

    LISTING 1 : Spécifications DDL pour
    la table Inlogdata
     CREATE TABLE [dbo].[InLogdata]
     [time] [varchar] (255) ,
     [c-ip] [varchar] (255) ,
     [cs-username] [varchar] (255) ,
     [s-sitename] [varchar] (255) ,
     [s-computername] [varchar] (255) ,
     [s-ip] [varchar] (255) ,
     [s-port] [varchar] (255) ,
     [cs-method] [varchar] (255) ,
     [cs-uri-stem] [varchar] (255) ,
     [cs-uri-query] [varchar] (255) ,
     [sc-status] [varchar] (255) ,
     [sc-win32-status] [varchar] (255) ,
     [sc-bytes] [varchar] (255) ,
     [cs-bytes] [varchar] (255) ,
     [time-taken] [varchar] (255) ,
     [cs-version] [varchar] (255) ,
     [cs-host] [varchar] (255) ,
     [cs(User-Agent)] [varchar] (255) ,
     [cs(Cookie)] [varchar] (255) ,
     [cs(Referer)] [varchar] (255) ,
     [Col021] [varchar] (255)
     ) ON [PRIMARY]
     GO

Pour créer le package DTS, j'ai démarré l'utilitaire SQL Server 2000 Enterprise Manager, j'ai développé DTS (Data Transformation Services), j'ai cliqué avec le bouton droit sur Lots en local, puis j'ai sélectionné Nouveau lot. Cette procédure a permis d'ouvrir DTS Designer. Ensuite, j'ai cliqué sur Connexion dans la barre d'outils du haut, j'ai sélectionné le type de connexion Fichier texte, puis j'ai sélectionné le fichier d'entrée dans l'arborescence des répertoires affichée. Ensuite, j'ai cliqué sur le bouton Propriétés pour ouvrir les propriétés de la connexion. Dans la première page de propriétés, j'ai cliqué sur le bouton Délimité et j'ai activé la case à cocher Noms des colonnes sur la première ligne, en conservant les valeurs par défaut pour les autres options.

J'ai ensuite cliqué sur Suivant, et dans la deuxième page de propriétés, j'ai cliqué sur l'option Autre et j'ai entré un caractère espace dans la zone à droite de Autre pour spécifier que DTS doit utiliser un espace comme délimiteur de colonne. À ce stade, je pouvais voir les colonnes correctement définies au bas de la page de propriétés. J'ai cliqué sur Terminer, puis sur OK pour fermer les propriétés de la connexion.

Ensuite, j'ai ajouté une deuxième connexion. J'ai sélectionné Microsoft OLE DB Provider for SQL Server comme Source de données, puis j'ai sélectionné le serveur dans la liste Serveur. J'ai entré un nom d'utilisateur et un mot de passe pour la base de données. J'ai sélectionné la base de données Iislogs et j'ai cliqué sur OK.

Enfin, j'ai fait glisser une tâche Transformer les données à partir de la barre d'outils (à gauche de l'interface) et j'ai sélectionné la première connexion créée comme source et la deuxième connexion comme destination. J'ai ensuite enregistré le package. Pour exécuter immédiatement le package, j'ai cliqué sur le bouton Exécuter (flèche vers la droite) dans la barre d'outils du haut. La figure 5 illustre les données du journal dans Enterprise Manager.

Affichage des données importées du journal

Figure 5 Affichage des données importées du journal

Analyse des données du journal

Après avoir chargé un journal dans SQL Server, vous pouvez utiliser SQL pour accéder aux données et les analyser. Par exemple, l'instruction SQL suivante sélectionne toutes les données de la table du journal :

select * from inlogdata

Vous pouvez classer les informations de journalisation par serveur avec l'instruction SQL suivante :

select * from inlogdata

order by 's-computername'

Vous n'avez pas besoin d'être expert en bases de données ou en langage SQL pour travailler avec des données SQL Server. Vous pouvez utiliser des programmes tels que Microsoft Excel, Microsoft Access et Seagate Crystal Reports de Seagate Software pour exécuter des requêtes et des analyses de vos données.

Lors de l'utilisation du format de fichier journal W3C, le champ État Win32 est utile pour identifier les erreurs qu'une application a signalées. Par exemple, pour déterminer ce que signifie la valeur 5 pour le champ État Win32, exécutez la commande suivante à l'invite :

net helpmsg 5

La commande renvoie le message d'erreur Accès refusé.

L'article Microsoft « IIS 'Bytes Sent' (Sc-bytes) Logging Property Is 0 for ASP Files » Site en anglais remarque que le champ W3C Octets envoyés peut renvoyer 0 lorsque des applications ASP (Active Server Pages) ont activé la mise en cache. Cet article suggère de désactiver la mise en cache. Ce faisant, le champ Octets envoyés renverra sans doute la bonne valeur, mais cela risque en revanche de ralentir considérablement votre application.

Comme dans le cas d'autres opérations, la gestion et l'analyse des journaux est une corvée si vous tentez de le faire manuellement. Le fait de combiner la journalisation IIS 5.0 et la fonctionnalité DTS de SQL Server vous permet d'automatiser le processus de chargement des données des journaux dans SQL Server, afin d'en simplifier l'analyse.

Vous pouvez également utiliser d'autres outils tels que Commerce Server 2000 Business Analytics pour analyser les données des journaux. Une autre approche consiste à acquérir un outil permettant d'automatiser l'analyse des données de vos journaux. Par exemple, WebTrends Log Analyzer offre quelques rapports intéressants que vous pouvez utiliser pour voir ce qui se passe sur un site.

Encore une autre approche de la récolte des informations d'utilisation d'un site Web consiste à désactiver totalement la journalisation et à écrire des filtres ISAPI (Internet Server API) pour capturer à partir de l'en-tête HTTP les données qui vous intéressent. Comme vous pouvez le constater, de nombreux choix s'offrent à vous pour la collecte et l'analyse des informations des sites Web.

À propos de l'auteur

Ken Spencer est rédacteur dans les magazines Windows 2000 Magazine et SQL Server Magazine. Il est vice-président de 32X Tech, propose des services de conseil et de formation personnalisée pour le développement et l'hébergement d'applications, et il a écrit plusieurs livres. Vous pouvez le contacter à l'adresse 32X Tech Quitter le site Microsoft Site en anglais.

L'article ci-dessus vous est proposé gracieusement par Windows 2000 Magazine. Cliquez ici Quitter le site Microsoft Site en anglais pour vous abonner à Windows 2000 Magazine.

À Microsoft Corporation, nous espérons que les informations de cet article vous seront utiles. Cependant, vous assumez l'ensemble des risques liés à l'utilisation des informations qu'il contient. Toutes les informations de cet article sont fournies telles quelles, sans aucune garantie, expresse ou implicite, d'exactitude, d'exhaustivité ou d'adaptation à un objectif particulier, et aucun des produits ou informations tiers mentionnés dans l'article n'est édité, recommandé, supporté ou garanti par Microsoft Corporation. Microsoft Corporation ne pourra pas être tenu pour responsable des éventuels dommages spéciaux, indirects ou accessoires subis suite à l'utilisation de ces informations, même si Microsoft corporation a été informé de la possibilité de tels dommages. Tous les prix des produits mentionnés dans ce document sont susceptibles d'être modifiés sans préavis.

Dernière mise à jour le lundi 17 décembre 2001

Pour en savoir plus