Analyse des fichiers de logs avec LogParser

Bonjour à tous,

Savez-vous que Microsoft fournit un outil très puissant pour traiter tous les fichiers logs, même les siens :-) ?

Cette outil s’appelle "LogParser" et se présente sous deux formes :

  • Un exécutable (x1) utilisable (x2) et automatisable (x3) en ligne de commandes
  • Une dll COM que l’on peut référencer dans nos projets pour développer une solution profitant des fonctionnalités de l’outil

Les possibilités et les scénarios d’utilisation sont vraiment nombreux. En plus, l’outil est impressionnant de rapidité !

 

En deux mots, le moteur de LogParser prend en entrée plusieurs formats comme les fichiers texte, les journaux d’évènements, ou bien directement le système de fichiers ou encore l’active Directory. Concernant les fichiers plats, il n'y a pas de restriction : les fichiers de logs avec les séparateurs habituels (point virgule, virgule, tabulation, etc...) sont pris en charge.

Nous manipulons dans la requête directement le nom des champs (par exemple : "sc-status", "time-taken", etc...).

Le moteur de LogParser permet d’éxécuter une requête de type SQL pour filtrer, ordonner, consolider les données et en sortir les résultats sous différentes formes. Il est même possible de faire directement l'insertion des données dans une base SQL Server ou de générer des graphiques. 

MoteurLogParser

 

Pour simplifier l'utilisation de l'outil en ligne de commande, vous pouvez créer un fichier cmd prenant en entrée le fichier contenant le requête SQL et le nom du fichier de sortie :

LancerLogParserSurLogsIIS.cmd

Logparser.exe file:%1 -i:IISW3C -o:TSV > %2

 

En exemple, voici une requête donnant les moyennes du temps total d'exécution des requêtes faites sur un site Web :

TempsExecutionMoyen.sql

SELECT AVG(time-taken) as TempsExecutionMoyen, COUNT(*) as PourNbRequetes, cs-uri-stem as Url FROM ex\*.log WHERE (cs-uri-stem not like '%.gif') and (cs-uri-stem not like '%.css') and (cs-uri-stem not like '%.js') and (cs-uri-stem not like '%.jpg') GROUP BY Url ORDER BY TempsExecutionMoyen DESC

 

Il suffit ensuite de lancer le fichier cmd :

LancerLogParserSurLogsIIS.cmd TempsExecutionMoyen.sql TempsExecutionMoyen.txt

 

Le résultat est sous la forme suivante (fichier avec séparation par tabulation) :

TempsExecutionMoyen PourNbRequetes Url 67843 8 /monapp/AllProducts.aspx 5532 9 /monapp/CreateAccount.aspx 5525 3 /monapp/FeaturedProducts.aspx 5062 8 /monapp/CompanyInformation.aspx 2261 4 /monapp/Links.aspx 305 28 /monapp/ProductInfo.aspx 156 1 /monapp/ 61 9 /monapp/Reviews.aspx 56 5 /monapp/News.aspx 0 4 /monapp/Default.htm

Statistics: ----------- Elements processed: 203 Elements output: 10 Execution time: 0.01 seconds

Le plus intéressant est que ce fichier peut être directement ouvert dans Excel afin de pouvoir profiter du filtre automatique, de la création de graphiques : L'analyse en devient presque facile !

 LogParserDansExcel

 

L'outil est disponible à l'adresse suivante - https://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07&displaylang=en

A utiliser sans modération :-)

Sebastien.