Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
von Benjamin Perkins
Tools und Kenntnisse, die in dieser Problembehandlung verwendet werden
- Microsoft LogParser (https://www.microsoft.com/download/details.aspx?id=24659)
- Eingabeaufforderung
- Ein grundlegendes Wissen über IIS-HTTP-Statuscodes ist hilfreich (https://support.microsoft.com/kb/943891)
- Ein grundlegendes Wissen über SQL-Abfragen ist hilfreich
Übersicht
Diese Problembehandlung hilft Ihnen bei der Analyse von IIS-Protokolldateien, um die Ursache zu ermitteln, wenn eine Anwendung, die auf IIS gehostet wird, fehlschlägt oder Leistungsprobleme auftritt. Bevor Sie beginnen, ist es wichtig zu beachten, dass alle Felder, die IIS protokollieren kann, standardmäßig nicht aktiviert sind. Beispielsweise sind bytes Sent and Bytes Received not selected, but they are very nützlich when troubleshooting a performance problem. Daher ist die beste Zeit, diese zusätzlichen Felder einzuschließen, bevor Systemprobleme auftreten. Wenn Sie dies noch nicht getan haben, wählen Sie diese zusätzlichen Felder aus, sie helfen Ihnen bei der Suche nach Lösungen, wenn Probleme auftreten.
Im folgenden Blog wird erläutert, wie Sie dies in IIS 7+ ausführen:
Ändern von IIS 7-Protokolldaten in Windows 2008
Szenario
Als Systemadministrator hören Sie Berichte von Benutzern Ihres Systems, die auf IIS gehostet werden, dass die Antwort langsam ist. Es gibt einige Erwähnungen, dass Webbrowser einfach zeitüberschreitungen oder nicht mehr reagieren, wenn sie auf Ihre Website zugreifen.
Sie springen in Aktion und recyceln den Arbeitsprozess; alles scheint wieder zu funktionieren, wie normal.
Sie können dies jedoch nicht als Lösung akzeptieren und wissen, warum dies passiert ist, aber nicht wissen, wo Sie beginnen möchten. Sie haben keine Details der Benutzer, z. B. Fehlercodes, Screenshots und schlimmer, Sie haben keine Leistungsdaten, um zu vergleichen, was gerade mit der normalen Leistung passiert ist. In vielen Fällen bringen Sie andere neue Probleme von einer schwerwiegenden Ursachenanalyse weg.
Microsoft LogParser ist ein gutes Tool, das schnell und einfach zu verwenden ist. In vielen Situationen hilft Ihnen das Tool, schnell ein tieferes Verständnis darüber zu erhalten, was auf dem Server passiert ist, und hilft Ihnen dabei, Probleme zu erkennen. Sie können die Informationen, die Sie mit LogParser sammeln, an Ihr Datenbankteam, Ihr Netzwerkteam oder an Ihre Entwickler weitergeben, um weitere Analysen zu erhalten.
Datensammlung
Standardmäßig befinden sich IIS-Protokolldateien in den folgenden Verzeichnissen:
- IIS 7 und höher:
%SystemDrive%\inetpub\logs\LogFiles
- IIS 6 und früher:
%WinDir%\System32\LogFiles
In dieser Problembehandlung verwende ich IIS 8. Öffnen Sie den IIS-Manager , und wählen Sie "Websites" aus, wie in Abbildung 1 dargestellt. Dadurch wird die ID jeder Website angezeigt, die auf Ihrem Server gehostet wird. Sie benötigen diese ID, um zu bestimmen, welches W3SVC*-Verzeichnis analysiert werden soll.
Abbildung 1: Abrufen der ID Ihrer Website
Öffnen Sie Windows-Explorer, und navigieren Sie zu dem Verzeichnis, das die IIS-Protokolldateien der Website enthält, die das Leistungsproblem aufgetreten ist. Abbildung 2 zeigt, wie das aussehen kann.
Abbildung 2: Speicherort der IIS-Protokolldatei
IIS-Protokolldateien können ziemlich groß sein; In Abbildung 2 ist die Protokolldatei beispielsweise u_ex12101858.log fast 100 MB groß. Da diese Protokolldateien möglicherweise enorm sind und Hunderte von Tausenden einzelner Protokolldateieinträge enthalten, ist das manuelle Durchsuchen jeder dieser Dateien für einen Fehler kein guter Ansatz, und gibt nur wenige Ergebnisse für die Zeit zurück, die Sie investieren.
Dies ist der Fall, wenn LogParser zu einem unverzichtbaren Tool in Ihrem Problembehandlungsarsenal wird.
Datenanalyse
Der erste Schritt besteht darin, zu ermitteln, welche Protokolldateien Fehler enthalten können. Wenn Kunden beispielsweise am 3. Juni 2012 über die Leistung beschweren, kann die Protokolldatei u_ex120603.log sein, wobei:
- "12" ist das gekürzte Jahr für 2012
- "06" bezieht sich auf den sechsten Monat (Juni)
- "03" ist der 3. Tag des Monats
Hinweis: Im obigen Beispiel wird davon ausgegangen, dass die IIS-Protokollierung so konfiguriert ist, dass Protokolldateien täglich gedreht werden, was die Standardeinstellung ist. Wenn Sie die Einstellungen für IIS geändert haben, um Protokolldateien in einem anderen Zeitintervall wie wöchentlich oder stundenweise zu drehen, sind die Namen der Protokolldateien unterschiedlich. Weitere Informationen zur Syntax für IIS-Protokolldateinamen finden Sie im Artikel zur Benennungssyntax für IIS-Protokolldateien (https://support.microsoft.com/kb/242898
).
Hinweis
Standardmäßig werden das Datum und die Uhrzeit in IIS-Protokollen mithilfe von GMT gespeichert; Sie müssen dies berücksichtigen, wenn Sie bestimmen, welche Protokolle Fehler enthalten. Das heißt, Sie können die Datums-/Uhrzeitangaben mithilfe der Funktion Von LogParser TO_LOCALTIME()
anpassen, wie im folgenden Beispiel dargestellt:
Hinweis
logparser.exe "SELECT TO_STRING(TO_LOCALTIME(TO_TIMESTAMP(date,time)),'yyyy-MM-dd hh:mm:ss') AS LocalTime,
COUNT(*) AS Hits FROM *.log WHERE date='2012-10-18'
GROUP BY LocalTime ORDER BY LocalTime" -i:w3c
Nachdem Sie die IIS-Protokolldateien identifiziert haben, die Fehler enthalten, sollten Sie sie an einen Speicherort kopieren, an dem sie analysiert werden können. Dieser Schritt ist optional, es wird jedoch nicht empfohlen, Ihre Protokolle auf Ihrem IIS-Server zu analysieren, da Ihre LogParser-Abfragen möglicherweise lange dauern, und wenn Ihre Protokolldateien groß sind, kann der Log Parser mit Systemressourcen konkurrieren.
Beispielsweise können Sie Ihre IIS-Protokolle in einen Ordner auf Ihrem Persönlichen Computer kopieren, auf dem Sie die LogParser-Dateien bereits kopiert haben, was in der Regel meine Protokolldateien analysiert. Abbildung 3 zeigt ein Beispiel dafür, wo ich sie gespeichert habe, um diesen Artikel zu erstellen.
Abbildung 3: IIS protokolliert dateien, die lokal für die Analyse mit LogParser gehostet werden
Nachdem Sie LogParser heruntergeladen haben, können Sie mit der Analyse beginnen. Die erste ausgeführte Abfrage wird in Abbildung 4 angezeigt. Die Ergebnisse geben Ihnen einen Überblick darüber, wie IIS auf die Anforderungen reagiert.
logparser.exe "SELECT sc-status, sc-substatus, COUNT(*) FROM *.log GROUP BY sc-status, sc-substatus ORDER BY sc-status" -i:w3c
sc-status sc-substatus COUNT(ALL *)
--------- ------------ ------------
200 0 3920658
206 0 2096
301 0 1031
302 0 65386
304 0 178705
400 0 35
401 2 692096
404 0 2935
404 11 7
405 0 1
406 0 36
500 0 11418
Statistics:
-----------
Elements processed: 4189228
Elements output: 12
Execution time: 7.70 seconds
Abbildung 4: LogParser-Abfrage (sc-status und sc-substatus)
Die interessanten Punkte innerhalb der Ergebnisse sind:
- Das Verhältnis zwischen 200 und 304 HTTP-Statuscodes (erfolgreiche Anforderungen)
- Die Anzahl von 500 HTTP-Statuscodes (fehlgeschlagene Anforderungen)
Die Bedeutung für jede dieser Statuscodes wird unten erläutert.
Das Verhältnis zwischen HTTP 200- und 304-Statuscodes (Analysieren erfolgreicher Anforderungen)
Das Verhältnis zwischen den HTTP-Statuscodes 200 und 304 ist wichtig, da es zeigt, wie viele Anforderungen vom Cache der Clients abgerufen werden, anstatt direkt vom Server. Die Ergebnisse in Abbildung 4 zeigen, dass es 3.920.658 Anforderungen gibt, die zu einem HTTP-Statuscode von 200 geführt haben. Dies bedeutet, dass die angeforderte Datei jedes Mal vom Server bereitgestellt wurde. Im Gegensatz dazu gab es 178.705 Anforderungen, die zu einem 304 HTTP-Statuscode geführt haben. Dies bedeutet, dass die angeforderte Datei aus dem lokalen Cache abgerufen wurde. Anders ausgedrückt: 95,5 % der Anforderungen werden vom Server verarbeitet.
Zwischenspeichern kann eine sehr positive Auswirkung auf die Leistung Ihres Systems haben; Weitere Informationen zur statischen und dynamischen Komprimierung finden Sie im Artikel zum Konfigurieren der HTTP-Komprimierung in IIS 7 .
HTTP 500 Statuscodes (Analysieren fehlgeschlagener Anforderungen)
HTTP 500 Statuscodes weisen möglicherweise schwerwiegende Probleme auf Ihrem System auf. Die Auswirkungsebene, die die Ursache eines HTTP 500-Fehlers auf Ihrem System hat, kann von nichts bis zum Absturz eines Arbeitsprozesses reichen. Wenn dies angezeigt wird, sollten Sie daher die in Abbildung 5 gezeigte Abfrage ausführen, um zu ermitteln, welche Anforderungen zu einem 500 HTTP-Statuscode geführt haben.
logparser.exe "SELECT cs-uri-stem, COUNT(*) FROM *.log WHERE sc-status=500 GROUP BY cs-uri-stem ORDER BY COUNT(*) DESC" -i:w3c
cs-uri-stem COUNT(ALL *)
--------------------------- ------------
/ShoppingCart/ViewCart.aspx 1378
/DataService.asmx 1377
/Start/default.aspx 949
/GetDetailsView.aspx 753
/Details/ImageUrls.asmx 722
Statistics:
-----------
Elements processed: 4189228
Elements output: 5
Execution time: 24.89 seconds
Abbildung 5: LogParser-Abfrage (cs-uri-stem mit einem 500 sc-status)
Diese Ergebnisse zeigen den Pfad und den Namen der Datei an, die bei Bedarf mit einem HTTP 500-Statuscode beantwortet wurde. Diese Art von Informationen wäre für das Entwicklungsteam wertvoll. Beispielsweise könnte das Entwicklungsteam diesen spezifischen Code weiter untersuchen und nach Code suchen, der ausgeführt wird, ohne in einem try {...} catch {...}
Codeblock enthalten zu sein, oder sie führen große Datenabfragen aus, die optimiert werden müssen.
Nehmen wir dieses Beispiel einen Schritt weiter und konzentrieren uns auf den wichtigsten Mitwirkenden für HTTP 500 Statuscodes. Es wäre interessant zu wissen, wann diese Fehler aufgetreten sind, da diese Informationen verwendet werden können, um zu überprüfen, ob Abhängigkeiten gleichzeitig Probleme haben.
logparser.exe "SELECT TO_STRING(TO_TIMESTAMP(date,time),'yyyy-MM-dd hh') AS Hour,
COUNT(*) FROM *.log WHERE sc-status=500 AND cs-uri-stem='/Start/default.aspx' AND date='2012-10-18' GROUP BY Hour ORDER BY Hour" -i:w3c
Hour COUNT(ALL *)
------------- ------------
2012-10-18 08 191
2012-10-18 09 163
2012-10-18 14 150
Statistics:
-----------
Elements processed: 4189228
Elements output: 3
Execution time: 6.36 seconds
Abbildung 6: LogParser-Abfrage (cs-uri-stem mit einem 500 sc-status)
Die Teilmenge der Ergebnisse in Abbildung 6 beschränkt den Datumsbereich des Problems. Diese Informationen können an Netzwerk-, Datenbank-, Betriebssystemadministratoren und die Entwicklungsteams übergeben werden, um zu überprüfen, ob gleichzeitig etwas anderes geschieht. Beispiel: Gab es zusätzliche Probleme zwischen 08:00 und 09:59:59 GMT und zwischen 14:00:00 und 14:59:59:59 GMT?
Der nächste Satz von LogParser-Abfragen verwendet die folgenden Felder, die einen besseren Einblick in Leistungsprobleme geben können:
Feld | BESCHREIBUNG | Standardmäßig aktiviert |
---|---|---|
Zeitaufwand | Die Dauer der Aktion in Millisekunden | Ja |
sc-bytes | Die Anzahl der vom Server gesendeten Bytes | Nein |
cs-bytes | Die Anzahl der vom Server empfangenen Bytes | Nein |
Wie bereits erwähnt, nehmen Sie sich jetzt Zeit, um die Sc-Bytes- und cs-Bytes-Felder zu aktivieren oder, falls möglich, sie selbst zu aktivieren. Sie bieten wertvolle Einblicke in Ihr System und sein Verhalten. Beispiel : Abbildung 7. Sie sehen, dass die durchschnittliche Zeit bei einigen hundert Millisekunden ziemlich gut ist. Betrachten Sie jedoch die maximale Zeit, die zu viel Zeit dauert.
logparser.exe "SELECT cs-method, COUNT(*) AS TotalCount, MAX(time-taken) AS MaximumTime, AVG(time-taken) AS AverageTime FROM *.log GROUP BY cs-method ORDER BY TotalCount DESC" -i:w3c
cs-method TotalCount MaximumTime AverageTime
--------- ---------- ----------- -----------
GET 3172034 1366976 153
POST 1011765 256539 359
HEAD 5363 26750 209
Statistics:
-----------
Elements processed: 4189228
Elements output: 3
Execution time: 6.36 seconds
Abbildung 7: LogParser-Abfrage (MAX und AVG-Zeitaufwand)
Ich weiß, dass Sie sich bereits die nächste Frage stellen, die beantwortet werden muss. Welche Anforderung dauert so viel Zeit? Abbildung 8 zeigt die Antwort auf diese Frage. Wie Sie feststellen werden, habe ich das Sc-Bytes-Feld in die LogParser-Abfrage aufgenommen. Denken Sie daran, dass sc-bytes die Größe der vom Server zurück an den Client gesendeten Datei darstellt.
logparser.exe "SELECT cs-uri-stem, time-taken, sc-bytes FROM *.log WHERE time-taken > 250000 ORDER BY time-taken DESC" -i:w3c
cs-uri-stem time-taken sc-bytes
--------------------------- ---------- --------
/ShoppingCart/ViewCart.aspx 1366976 256328
/DataService.asmx 1265383 53860
/Start/default.aspx 262796 8077
/GetDetailsView.aspx 261305 5038
/Details/ImageUrls.asmx 256539 2351
Statistics:
-----------
Elements processed: 4189228
Elements output: 5
Execution time: 8.98 seconds
Abbildung 8: LogParser-Abfrage (MAX und AVG-Zeitaufwand)
Wir würden wahrscheinlich alle zustimmen, dass die für die Anforderungen benötigte Zeit eine "normale" Antwortzeit überschreitet. Die Größe der Dateien ist jedoch etwas, das der Administrator oder Entwickler analysieren muss, um festzustellen, ob sich die Größen innerhalb eines akzeptablen Bereichs befinden.
Die Schlussfolgerung besteht darin, dass die GetDetailsView.aspx-Datei eine Anzahl von 500 HTTP-Statuscodes ausgelöst hat und irgendwann lange dauerte, bis die Datei abgeschlossen wurde, auch wenn es sich um eine relativ kleine Datei handelte. Möglicherweise möchten Sie sich das Datum und die Uhrzeit ansehen, zu denen Probleme auftreten, die für diese Datei auftreten, und den Code in der Datei mit problemen untersuchen, die aufgetreten sind. (Beispielsweise enthalten die IIS-Protokolle eine Liste von Variablen, die in der Abfragezeichenfolge übergeben wurden. Sie können diese Werte auf schlechte Daten überprüfen.)
Die in Abbildung 4 - 8 angegebenen Beispiele helfen ihnen, ein Verständnis darüber zu erhalten, wo die Ursache eines Problems vorhanden sein kann. Wahrscheinlich hat diese Analyse jedoch nur eine bessere Sicht auf die Situation gemacht, die zu mehr Fragen und tieferen Analysen führen wird. Wenn dies der Fall ist, möchten Sie möglicherweise eine Darstellung dieser Daten auf ansprechendere Weise erstellen. Im folgenden Abschnitt wird dies ausführlich behandelt.
Berichterstellung
Screenshots eines Befehlsfensters mit LogParser-Abfragen und deren Ergebnisse können während der Analysephase eines Leistungsproblems in Ordnung sein; Wenn Sie jedoch vor Vorgesetzten oder Direktoren gehen müssen, um zu erklären, was passiert ist, kann es nicht die Marke erfüllen.
Hinweis
Damit Diagramme über LogParser funktionieren können, müssen Sie die Office Web Components installieren. In den folgenden Artikeln wird erläutert, wie Sie dies tun:
Abbildung 9 zeigt die LogParser-Abfrage zum Erstellen eines 3D-Kreisdiagramms mit der Anzahl der Anforderungen und dem zugehörigen HTTP-Statuscode. Ich habe den Status 200 entfernt, da diese erfolgreich sind. Was ich hier bin, sind die Anforderungen, die etwas anderes als OK sind.
logparser.exe "SELECT sc-status AS Status, COUNT(*) AS Count INTO status.gif FROM *.log WHERE sc-status > 200 GROUP BY Status ORDER BY Status" -i:w3c -o:CHART -chartType:PieExploded3D -ChartTitle:"Request Status"
Statistics:
-----------
Elements processed: 4189228
Elements output: 10
Execution time: 6.20 seconds
Abbildung 9: LogParser-Abfrage (Erstellen eines 3D-Kreisdiagramms)
Das Ergebnis der Abfrage wird in Abbildung 10 veranschaulicht. Es gibt eine Reihe zusätzlicher Parameter, die Sie an LogParser übergeben können, die sich auf das Bild auswirken. Legend, groupSize, config usw. Um eine vollständige Listeneingabe abzurufen: LogParser -h -o:CHART für eine Liste aller Parameter. Dieser Befehl enthält auch eine Liste der verschiedenen Diagrammtypen.
Abbildung 10: LogParser 3D-Kreisdiagramm
Ein weiteres nützliches Diagramm ist das Verhältnis zwischen zwischengespeicherten und tatsächlichen Anforderungen. Erinnern Sie sich an den Abschnitt "Datenanalyse", in dem ich erläutert habe, dass ein HTTP-Statuscode von 200 bedeutet, dass die angeforderten Dateien jedoch vom Server abgerufen werden, ein 304 wird vom Client abgerufen. Abbildung 11 zeigt die LogParser-Abfrage für die Erstellung dieses Diagramms. Beachten Sie, dass ich den Parameter "-values " verwendet habe.
logparser.exe "SELECT sc-status AS Status, COUNT(*) AS Count INTO cache.gif FROM *.log WHERE sc-status=200 OR sc-status=304 GROUP BY Status ORDER BY Status" -i:w3c -o:CHART -chartType:PieExploded3D -ChartTitle:"Cache" -values:ON
Statistics:
-----------
Elements processed: 4189228
Elements output: 2
Execution time: 6.35 seconds
Abbildung 11: LogParser-Abfrage (Erstellen eines 3D-Kreisdiagramms)
Obwohl der Unterschied zwischen HTTP-Statuscode 200 und 304 deutlich sichtbar ist, dachte ich, dass er einige Werte hinzufügen kann, um die Anzahl der Treffer für jede zu enthalten. Abbildung 12 veranschaulicht die Ausgabe der vorherigen LogParser-Abfrage.
Abbildung 12: LogParser 3D-Kreisdiagramm
Ich denke, Sie erhalten jetzt das Bild darüber, wie die Diagrammerstellung der IIS-Protokolle mithilfe von LogParser helfen kann, was viel besser geschieht als eine Tabelle mit Daten. Aber bevor ich stoppe, möchte ich Ihnen ein weiteres Beispiel mit dem Spaltendiagrammtyp anzeigen. Die in Abbildung 13 dargestellte LogParser-Abfrage erzeugt ein 3D-Säulendiagramm mit der Anzahl von 500 HTTPS-Statuscodes pro Stunde.
logparser.exe "SELECT to_string(to_timestamp(date, time), 'yyyy-MM-dd hh') AS Hour, COUNT(*) AS Count INTO 500.gif FROM *.log WHERE sc-status=500 GROUP BY Hour ORDER BY Hour" -i:w3c -o:CHART -chartType:Column3D -ChartTitle:"500 Errors by Hour"
Statistics:
-----------
Elements processed: 4189228
Elements output: 13
Execution time: 6.32 seconds
Abbildung 13: LogParser-Abfrage (Erstellen eines 3D-Säulendiagramms)
Das resultierende Diagramm wird in Abbildung 14 veranschaulicht.
Abbildung 14: LogParser 3D-Säulendiagramm
Erstellen von Diagrammen mithilfe von Excel und CSV
Am Anfang dieses Abschnitts habe ich erwähnt, dass die Installation der Office Web Component (OWC) eine Anforderung ist, wenn Sie die LogParser-Diagrammfunktionen verwenden möchten. In Ihrer Organisation gibt es möglicherweise Einschränkungen, die dies verbieten, oder Sie möchten es möglicherweise nicht installieren. Wenn dies der Fall ist, sollten Sie das LogParser-Abfrageergebnis in eine CSV-Datei exportieren und in Excel importieren.
Abbildung 15 zeigt die LogParser-Abfrage, die die HTTP-Statuscodes für alle Anforderungen extrahiert, die nicht 200 in eine CSV-Datei sind.
logparser.exe "SELECT sc-status AS Status, COUNT(*) AS Count INTO status.csv FROM *.log WHERE sc-status > 200 GROUP BY Status ORDER BY Status" -i:w3c -o:csv
Statistics:
-----------
Elements processed: 4189228
Elements output: 10
Execution time: 6.20 seconds
Abbildung 15: LogParser-Abfrage (Erstellen einer CSV-Datei zum Importieren in Excel)
Beachten Sie in Abbildung 15 , dass ich den Parameter -o verwendet habe, damit LogParser die Ausgabe im CSV-Format erstellt.
Um die CSV-Datei in Excel zu importieren, damit ein Diagramm daraus erstellt werden kann, öffnen Sie Excel, navigieren Sie zur Registerkarte "DATEN", und wählen Sie "Aus Text" aus. Abbildung 16 zeigt, wie dies aussieht.
Abbildung 16: Importieren der CSV-Datei, die von LogParser in Excel erstellt wurde
Wählen Sie die status.csv Datei aus, die von der LogParser-Abfrage erstellt wurde, und navigieren Sie durch den Import-Assistenten. Importieren Sie die durch Trennzeichen getrennte CSV-Datei, und Sie enden mit dem Status in Spalte A und der Anzahl der Vorkommen für jeden Status in Spalte B. Dies geht davon aus, dass Sie die in Abbildung 15 dargestellte LogParser-Abfrage ausgeführt haben. Wählen Sie schließlich alle Daten aus Spalte A und B aus, einschließlich der Kopfzeilen, und wählen Sie den Typ des zu erstellenden Kreisdiagramms aus. Abbildung 17 zeigt, wie dies aussehen kann.
Abbildung 17: Erstellen eines Kreisdiagramms mithilfe einer CSV-Datei
Das Endergebnis ist ein Kreisdiagramm, Abbildung 18 , das der zuvor in Abbildung 10 gezeigten Ähnlich ist. Es gibt viele Optionen in Bezug auf Farbe, Diagrammtyp, Beschriftungen usw. Mit einem Klick auf eine Schaltfläche können Sie den Diagrammtyp von Kreis in Balken oder in Linie ändern. Es gibt viele Optionen zum Erstellen professioneller aussehender Diagramme in Excel.
Abbildung 18: Ein Kreisdiagramm mit einer CSV-Datei ähnlich wie Abbildung 10
Es gibt so viele Optionen und Möglichkeiten zur Analyse und Darstellung der Ergebnisse dieser Analyse mithilfe von LogParser. Weitere Tipps und Beispiele finden Sie in diesen Artikeln von Robert McMurray. Es gibt auch eine sehr nützliche Hilfedatei und viele vordefinierte Skripts, die im Installationspaket von LogParser bereitgestellt werden. Im nächsten Abschnitt werden dies und weitere Themen ausführlicher behandelt.
Hilfe
Wenn Sie LogParser 2.2 auf Ihrem Computer installieren, wird sie standardmäßig im C:\Program Files (x86)\Log Parser 2.2
Verzeichnis installiert. Navigieren Sie zu diesem Speicherort, und überprüfen Sie die Verzeichnisse "Samples\Queries" und "Samples\Scripts" für eine vielzahl von vordefinierten Code, die Sie schnell bewegen können.
Sie werden auch einen großen Vorteil erkennen, indem Sie die Inhalte in der Datei "LogParser.chm" lesen.
Verringern der Größe oder Aufteilung von IIS-Protokolldateien
Möglicherweise tritt eine Situation auf, in der die IIS-Protokolldatei zu groß ist, damit LogParser abfragen kann. Dies ist wahrscheinlich auf einem 32-Bit-Computer, kann aber auch auf einem 64-Bit-Computer auftreten. Wenn Sie beim Ausführen einer LogParser-Abfrage jedoch fehler beim Ausführen einer LogParser-Abfrage auftreten, sollten Sie den befehl in Abbildung 19 ausführen. Die Abfrage extrahiert einige wesentliche Felder aus einer großen IIS-Protokolldatei und platziert sie in eine andere, was zu einer kleineren Protokolldatei führt.
logparser.exe "SELECT date, time, c-ip, cs-uri-stem, cs-uri-query, sc-status, sc-substatus, sc-win32-status, sc-bytes, cs-bytes, time-taken INTO u_exJUSTRIGHT.log FROM u_exTOOBIG.log" -i:w3c -o:w3c
Statistics:
-----------
Elements processed: 19712301
Elements output: 19712301
Execution time: 3.07 seconds
Abbildung 19: Verringern der Größe einer IIS-Protokolldatei (durch Entfernen von Feldern)
In diesem Beispiel habe ich eine Dateigrößenreduzierung von etwa 45 % realisiert. In vielen Fällen ist dies vielleicht genug, in anderen vielleicht nicht. Dies hängt von der Größe der ursprünglichen Protokolldatei ab. Wenn Sie feststellen, dass Sie die Größe der IIS-Protokolldatei weiterhin verringern müssen, sollten Sie der LogParser-Abfrage, wie in Abbildung 20 dargestellt, eine Datumszeiteinschränkung hinzufügen.
logparser.exe "SELECT date, time, c-ip, cs-uri-stem, cs-uri-query, sc-status, sc-substatus, sc-win32-status, sc-bytes, cs-bytes, time-taken INTO u_exJUSTRIGHT.log FROM u_exTOOBIG.log WHERE to_timestamp(date, time) >= timestamp('2012-11-09 00:00:00', 'yyyy-MM-dd hh:mm:ss')" -i:w3c -o:w3c
Statistics:
-----------
Elements processed: 240123
Elements output: 240123
Execution time: 0.45 seconds
Abbildung 20: Weitere Reduzierung der Größe einer IIS-Protokolldatei durch Hinzufügen einer WHERE-Klausel
Dies ist eine wertvolle Methode zum Verringern der Dateigröße, aber es ist auch nützlich, unerwünschte Einträge aus dem IIS-Protokoll zu entfernen. Wenn Sie beispielsweise mit der Behandlung eines Problems beginnen, erkennen Sie, dass Zeitaufwand, sc-Bytes und cs-Bytes nicht protokolliert wurden. Sie haben sie in IIS aktiviert und möchten, dass die Abfrage diese Einträge nur mit den zuletzt aktivierten Feldern analysiert. Verwenden Sie die Where-Anweisung, um die Daten aus der IIS-Protokolldatei aus der Zeit zu extrahieren, in der diese Felder aktiviert wurden. Dies ist wichtig, wenn Sie die AVG-, MIN- und MAX-Aggregate verwenden.
Zusammenfassung
LogParser ist ein kleines, aber leistungsstarkes Tool, um eine Reihe verschiedener Systemprotokolltypen zu analysieren. Dieser Artikel konzentriert sich auf Abfragen, die auf IIS-Protokolle anwendbar sind. Wenn Leistungsprobleme oder Fehler in Ihrer IIS-Umgebung auftreten, ist es manchmal schwierig zu wissen, wo sie beginnen.
LogParser kann als Ausgangspunkt verwendet werden, da ein Systemadministrator, der über einige SQL-Fähigkeiten verfügt, schnell sehr anspruchsvolle LogParser-Abfragen erstellen kann. Diese Abfragen können verwendet werden, um die Ursachenanalyse des Problems weiter zu fördern.
Nützliche Links
Hier sind die Links, die in diesem Artikel erwähnt werden, sowie einige Links mit zusätzlichen Informationen.
- Microsoft LogParser: http://www.bing.com/search?q=logparser oder https://www.microsoft.com/download/details.aspx?id=24659
- Die HTTP-Statuscodes in IIS 7.0, IIS 7.5 und IIS 8.0
- Ändern von IIS 7-Protokolldaten in Windows 2008
- Ändern von IIS 6-Protokolldaten in Windows 2003
- Konfigurieren der HTTP-Komprimierung in IIS 7
- Diagrammerstellung mit LogParser mit OWC
- Robert McMurrays Blogs auf LogParser
- Microsoft Log Parser Toolkit: Ein vollständiges Toolkit für das nicht dokumentierte Protokollanalysetool von Microsoft