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 Bobby Videna
Die Protokollfilterung in IIS Advanced Logging ermöglicht es Administratoren, nur die für sie interessanten Informationen über den Website-Verkehr zu sammeln, anstatt den gesamten Website-Verkehr zu erfassen und dann alle Daten zu sichten, um die gewünschten Informationen zu finden. Beispielsweise möchte ein Websiteadministrator wissen, ob es Anforderungen an seine Website gibt, die auf Inhalte verweisen, die nicht mehr verfügbar sind. Wenn Sie wissen, dass diese Anforderungen einen Statuscode von '404' zurückgeben, kann der Administrator einen Filter für eine Protokolldefinition erstellen, der nur die Anforderungen erfasst, bei denen 'Status' = '404' ist. Der Administrator verfügt nun über eine Protokolldatei, die nur die gewünschten Daten enthält.
Durch die Verwendung von Filtermethoden können Administratoren ihre Protokolldaten verwalten, indem sie verschiedene Protokolldefinitionen erstellen, um unterschiedliche Daten zu sammeln. Beim vorherigen Beispiel kann ein Administrator eine Protokolldefinition erstellen, um nur „404-Antworten“ zu erfassen, eine weitere Protokolldefinition, um nur „400-Antworten“ zu erfassen, und eine weitere, um nur „500-Antworten“ zu erfassen, wenn dies die Antworten sind, die interessieren. Es ist wichtig zu beachten, dass keine Daten erfasst werden, die nicht von Interesse sind, wodurch das schiere Volumen von Protokolldaten reduziert und die Protokolldateien einfacher zu bearbeiten sind.
Anforderungen
In dieser exemplarischen Vorgehensweise wird davon ausgegangen, dass Sie grundlegende Kenntnisse der benutzerdefinierten Protokollierung mithilfe des Features „Erweiterte Protokollierung“ haben. Eine schnelle Einführung finden Sie unter Erweiterte Protokollierung für IIS – Benutzerdefinierte Protokollierung.
Klonen einer Protokolldefinition
In dieser exemplarischen Vorgehensweise wird davon ausgegangen, dass Sie grundlegende Kenntnisse zum Erstellen einer Protokolldefinition mithilfe des Features „Erweiterte Protokollierung“ haben und sich ausschließlich auf das Erstellen eines Filters auf der IIS-Manager-Benutzeroberfläche konzentrieren. Für diese exemplarische Vorgehensweise erstellen wir keine neuen Protokolldefinitionen. Stattdessen klonen wir die Standardprotokolldefinition und erstellen einen Filter für die geklonten Protokolldefinitionen. Durch das Klonen einer Protokolldefinition werden grundlegende Protokolldefinitionen erzielt, mit denen wir in dieser exemplarischen Vorgehensweise arbeiten können, ohne die einzelnen Felder für jede neue Protokolldefinition erneut auswählen zu müssen.
Gehen Sie wie folgt vor, um eine Protokolldefinition zu klonen:
- Öffnen Sie IIS-Manager (klicken Sie auf >Start>VerwaltungstoolsInternetinformationsdienste (Internet Information Services, IIS) Manager).
- Öffnen Sie im IIS-Manager im Bereich Verbindungen das Feature „Erweiterte Protokollierung“ auf Standardwebsite- Ebene.
- Wählen Sie auf der Featureseite Erweiterte Protokollierung die Standardprotokolldefinition (%COMPUTERNAME%-Server) aus, und klicken Sie dann im Bereich Aktionen auf Protokolldefinition klonen.
- Geben Sie im Dialogfeld Protokolldefinition in Namen der neuen Protokolldefinition %COMPUTERNAME%-FilterExampleein, und klicken Sie dann auf OK.
Die neue Protokolldefinition %COMPUTERNAME%-FilterExample wird auf der Featureseite Erweiterte Protokollierung angezeigt, wie in der folgenden Abbildung dargestellt:
Diese Protokolldefinition wird in den folgenden Abschnitten verwendet, in denen beschrieben wird, wie Protokollfilter erstellt werden.
Erstellen eines einfachen Filters
In diesem Abschnitt wird beschrieben, wie Sie einen einfachen Filter für die Protokolldefinition %COMPUTERNAME%-FilterExample erstellen, die wir im vorherigen Abschnitt erstellt haben, wodurch Anforderungen für statische HTML-Dateien protokolliert werden. Dies kann kompliziert sein, da HTML-Dateien entweder die .htm- oder .html- Dateinamenerweiterung aufweisen können, und das einzige Protokollierungsfeld, das diese Informationen enthält (URI-Stem) auch den virtuellen Pfad und Dateinamen enthält. Um dieses Problem zu beheben, zeigen wir, wie reguläre Ausdrücke im Feature „Erweiterte Protokollierung“ verwendet werden, um eine Musterzuordnung für das URI-Stammprotokollierungsfeld auszuführen.
Der genaue reguläre Ausdruck, der verwendet werden soll, ist .*\.html?. Das erste Zeichen (.) entspricht einem beliebigen Zeichen außer \r und \n. Das zweite Zeichen (*) wiederholt das vorherige Zeichen 0 oder mehr Mal. Diese ersten beiden Zeichen entsprechen einer beliebigen Zeichenfolge und lösen das Problem des Übereinstimmens mit dem virtuellen Pfad und Dateinamen.
Als Nächstes betrachten wir die Dateiendung von Interesse (.htm und .html). Das Zeichen (.) ist ein reserviertes Regex-Zeichen, aber wir möchten den Literalwert. Daher verwenden wir das umgekehrte Schrägstrichzeichen (\), um den (.) zu escapen, der darauf folgt, damit (.) abgeglichen wird. Die Buchstaben html werden auch buchstäblich abgeglichen. Schließlich macht das Fragezeichen (?) das vorangehende Zeichen (l) optional, wodurch die Literal-Übereinstimmung entweder .html oder .htmwird.
Um weitere Informationen zum Erstellen regulärer Ausdrücke zu erhalten, die Ihren Anforderungen entsprechen, empfehlen wir eine Internetsuche unter „Reguläre Ausdrücke“, um tiefer in dieses Thema einzutauchen.
Gehen Sie wie folgt vor, um einen Filter zu erstellen, der nur Anforderungen erfasst, die über eine .html- oder .htm-Dateiendung verfügen:
Wählen Sie auf der Featureseite Erweiterte Protokollierung die Protokolldefinition %COMPUTERNAME%-FilterExample aus, und klicken Sie dann im Bereich Aktionen auf Protokolldefinition bearbeiten.
Klicken Sie unten auf der Featureseite Protokolldefinition im Bereich Filter auf Filter bearbeiten.
Wählen Sie im Dialogfeld Protokolldefinitionsfilter bearbeiten den Stammknoten (Bedingung: UND) in der hierarchischen Liste aus, und klicken Sie dann auf Ausdruck hinzufügen.
Geben Sie im Bereich Ausdruck des Dialogfelds die folgenden Werte für den Ausdruck an:
- Feld. Wählen Sie URI-Stemaus.
- Operator. Wählen Sie gleichaus.
- Wert. Geben Sie .*\.html? ein.
- Als regulärer Ausdruck aktivieren. Aktivieren Sie dieses Kontrollkästchen, um sicherzustellen, dass die erweiterte Protokollierung den Wert als Regex-Ausdruck behandelt.
Klicken Sie im Dialogfeld auf OK, und dann im Bereich Aktionen auf Anwenden, um die Änderungen an der Protokolldefinition zu speichern.
Erstellen eines Filters mit mehreren Ausdrücken
Ein weiteres nützliches Beispiel für einen Protokollfilter besteht darin, nur die Anforderungen zu erfassen, die nicht erfolgreich bereitgestellt wurden. Die meisten Ihrer Anforderungen sind hoffentlich erfolgreich und geben einen Statuscode von „200“ zurück, aber sie können bei dem Versuch, die Anforderungen zu finden, auch Fehlerbedingungen wie „400“ (ungültige Anforderung), „404“ (Datei nicht gefunden) und/oder „500“ (Interner Serverfehler) auslösen. In diesem Abschnitt wird beschrieben, wie Sie einen Filter für eine Protokolldefinition erstellen, der mehrere Ausdrücke verwendet, um nur Anforderungen mit Statuscodes von „400“, „404“ und „500“ zu erfassen.
Gehen Sie wie folgt vor, um diesen Filter zu erstellen:
Verwenden Sie die Schritte aus Klonen einer Protokolldefinition, um eine neue Protokolldefinition namens %COMPUTERNAME%-FilterExample_MultipleRequests zu erstellen.
Wählen Sie auf der Featureseite Erweiterte Protokollierung die Protokolldefinition %COMPUTERNAME%-FilterExample_MultipleRequests aus, und klicken Sie dann im Bereich Aktionen auf Protokolldefinition bearbeiten.
Klicken Sie unten auf der Featureseite Protokolldefinition im Bereich Filter auf Filter bearbeiten.
Wählen Sie im Dialogfeld Protokolldefinitionsfilter bearbeiten den Stammknoten (Bedingung: UND) in der hierarchischen Liste aus, wählen Sie ODER-Bedingung im Bereich Bedingung aus, und klicken Sie dann auf Ausdruck hinzufügen.
Beachten Sie, dass sich der ursprüngliche Stammknoten (Bedingung: UND) in der Liste in Bedingung ODER ändert, wenn Sie im Bereich Bedingung ODER Bedingung auswählen.
Geben Sie im Bereich Ausdruck des Dialogfelds die folgenden Werte für den Ausdruck an:
- Feld. Wählen Sie Status aus.
- Operator. Wählen Sie gleichaus.
- Wert. Geben Sie 404 ein.
- Als regulärer Ausdruck aktivieren. Deaktivieren Sie dieses Kontrollkästchen, um sicherzustellen, dass die erweiterte Protokollierung den Wert als Literalausdruck behandelt.
Wählen Sie den Stammknoten (Bedingung: ODER) in der Liste aus, und klicken Sie dann auf Ausdruck hinzufügen.
Der Liste wird ein weiterer Ausdrucksknoten hinzugefügt. Geben Sie im Bereich Ausdruck des Dialogfelds die folgenden Werte für den Ausdruck an:
- Feld. Wählen Sie Status aus.
- Operator. Wählen Sie gleichaus.
- Wert. Geben Sie 400 ein.
- Als regulärer Ausdruck aktivieren. Deaktivieren Sie dieses Kontrollkästchen, um sicherzustellen, dass die erweiterte Protokollierung den Wert als Literalausdruck behandelt.
Wählen Sie den Stammknoten (Bedingung: ODER) in der Liste aus, und klicken Sie dann auf Ausdruck hinzufügen.
Der Liste wird ein dritter Ausdrucksknoten hinzugefügt. Geben Sie im Bereich Ausdruck des Dialogfelds die folgenden Werte für den Ausdruck an:
- Feld. Wählen Sie Status aus.
- Operator. Wählen Sie gleichaus.
- Wert. Geben Sie 500 ein.
- Als regulärer Ausdruck aktivieren. Deaktivieren Sie dieses Kontrollkästchen, um sicherzustellen, dass die erweiterte Protokollierung den Wert als Literalausdruck behandelt.
Klicken Sie im Dialogfeld auf OK, und dann im Bereich Aktionen auf Anwenden, um die Änderungen an der Protokolldefinition zu speichern.
Erstellen eines Filters mit mehreren Bedingungen
Bedingungen sind Verben, die unterschiedliche Ausdrücke verbinden. Standardmäßig werden alle Ausdrücke unter einer einzigen Stammknotenbedingung angezeigt. Wenn Sie nur einen einzelnen Ausdruck wie im ersten Beispiel haben, wird die Stammknotenbedingung ignoriert. Wenn Sie jedoch mehrere Ausdrücke haben, bestimmt die Stammknotenbedingung, ob der Filter exklusiver ist (Bedingung: UND) oder mehr einschließlich (Bedingung: ODER). Standardmäßig lautet die Stammknotenbedingung UND (Kondition: UND), aber Sie haben in unserem zweiten Beispiel gesehen, wie sie geändert werden kann zu ODER (Bedingung: ODER).
In diesem Abschnitt wird beschrieben, wie Sie einen Filter für eine Protokolldefinition erstellen, der Anforderungen basierend auf mehreren Kriterien erfasst. Das Beispiel in diesem Abschnitt zeigt einen Filter, der alle ungültigen Anforderungen erfasst, jedoch nur für statische HTML- und ASP.NET-Dateinamenerweiterungen. Das Beispiel im vorherigen Abschnitt wird verwendet, um den Teil des Filters zu erstellen, der fehlerhafte Anforderungen erfasst, und das erste Beispiel wird verwendet, um den Teil des Filters zu erstellen, der die gewünschten Dateinamenerweiterungen erfasst. (Beachten Sie, dass die ASP-Dateinamenerweiterung .asp ist und die ASP.NET Dateinamenerweiterung .aspx. Daher müssen wir den im ersten Beispiel verwendeten regulären Ausdruckswert in .*\.aspx?) ändern.
Die geeigneten Bedingungen müssen verwendet werden. Aus einer höheren Perspektive sollte der Filter „STATUS=X" UND "EXTENSION=Y“ sein. Aus detaillierter Sicht können wir 'STATUS=X' erweitern, zu ('Status'='400' ODER 'Status'='404' OR 'Status'='500')' und auch ‘ERWEITERUNG=Y zu ('URI-Stem'='.*\.html?' ODER 'URI-Stem'='.*\.aspx?'). Der vollständige Filter sollte wie ('Status'='400' ODER 'Status'='404' ODER 'Status'='500') UND ('URI-Stem'='.*\.html?' ODER 'URI-Stem'='.*\.aspx?') aussehen
Gehen Sie wie folgt vor, um einen komplexen Filter für eine Protokolldefinition zu erstellen, der mehrere Bedingungen sowie mehrere Ausdrücke verwendet:
Verwenden Sie die Schritte aus Klonen einer Protokolldefinition, um eine neue Protokolldefinition namens %COMPUTERNAME%-FilterExample_Conditions zu erstellen.
Wählen Sie auf der Featureseite Erweiterte Protokollierung die Protokolldefinition %COMPUTERNAME%-FilterExample_Conditions aus, und klicken Sie dann im Bereich Aktionen auf Protokolldefinition bearbeiten.
Klicken Sie unten auf der Featureseite Protokolldefinition im Bereich Filter auf Filter bearbeiten.
Wählen Sie im Dialogfeld Protokolldefinitionsfilter bearbeiten den Stammknoten (Bedingung: UND) in der hierarchischen Liste aus, und klicken Sie dann auf Bedingung hinzufügen.
Unterhalb der Stammknotenbedingung (Bedingung: UND) in der Liste wird eine Unterknotenbedingung hinzugefügt. Wählen Sie im Bereich Bedingung des Dialogfelds ODER Bedingungaus, und klicken Sie dann auf Ausdruck hinzufügen.
Geben Sie im Bereich Ausdruck des Dialogfelds die folgenden Werte für den Ausdruck an:
- Feld. Wählen Sie URI-Stemaus.
- Operator. Wählen Sie gleichaus.
- Wert. Geben Sie .*\.html? ein.
- Als regulärer Ausdruck aktivieren. Aktivieren Sie dieses Kontrollkästchen, um sicherzustellen, dass die erweiterte Protokollierung den Wert als Regex-Ausdruck behandelt.
Wählen Sie die Bedingung des Unterknotens (Bedingung: ODER) in der Liste aus, und klicken Sie dann auf Ausdruck hinzufügen.
Geben Sie im Bereich Ausdruck des Dialogfelds die folgenden Werte für den Ausdruck an:
- Feld. Wählen Sie URI-Stemaus.
- Operator. Wählen Sie gleichaus.
- Wert. Geben Sie .*\.aspx? ein.
- Als regulärer Ausdruck aktivieren. Aktivieren Sie dieses Kontrollkästchen, um sicherzustellen, dass die erweiterte Protokollierung den Wert als Regex-Ausdruck behandelt.
Wählen Sie nun die Stammknotenbedingung (Bedingung: UND) in der hierarchischen Liste aus, und klicken Sie dann auf Bedingung hinzufügen.
Unterhalb der Stammknotenbedingung (Bedingung: UND) in der Liste wird eine zweite Unterknotenbedingung hinzugefügt. Wählen Sie im Bereich Bedingung des Dialogfelds ODER Bedingungaus, und klicken Sie dann auf Ausdruck hinzufügen.
Geben Sie im Bereich Ausdruck des Dialogfelds die folgenden Werte für den Ausdruck an:
- Feld. Wählen Sie Status aus.
- Operator. Wählen Sie gleichaus.
- Wert. Geben Sie 400 ein.
- Als regulärer Ausdruck aktivieren. Deaktivieren Sie dieses Kontrollkästchen, um sicherzustellen, dass die erweiterte Protokollierung den Wert als Literalausdruck behandelt.
Wählen Sie die Bedingung des Unterknotens (Bedingung: ODER) unten in der Liste aus, und klicken Sie dann auf Ausdruck hinzufügen.
Geben Sie im Bereich Ausdruck des Dialogfelds die folgenden Werte für den Ausdruck an:
- Feld. Wählen Sie Status aus.
- Operator. Wählen Sie gleichaus.
- Wert. Geben Sie 404 ein.
- Als regulärer Ausdruck aktivieren. Deaktivieren Sie dieses Kontrollkästchen, um sicherzustellen, dass die erweiterte Protokollierung den Wert als Literalausdruck behandelt.
Wählen Sie die Bedingung des Unterknotens (Bedingung: ODER) unten in der Liste aus, und klicken Sie dann auf Ausdruck hinzufügen.
Geben Sie im Bereich Ausdruck des Dialogfelds die folgenden Werte für den Ausdruck an:
- Feld. Wählen Sie Status aus.
- Operator. Wählen Sie gleichaus.
- Wert. Geben Sie 500 ein.
- Als regulärer Ausdruck aktivieren. Deaktivieren Sie dieses Kontrollkästchen, um sicherzustellen, dass die erweiterte Protokollierung den Wert als Literalausdruck behandelt.
Klicken Sie im Dialogfeld auf OK, und dann im Bereich Aktionen auf Anwenden, um die Änderungen an der Protokolldefinition zu speichern.
Zusammenfassung
In dieser exemplarischen Vorgehensweise haben wir erfahren, wie Sie einen einfachen Filter mit einem einzelnen Ausdruck sowie komplexere Filter erstellen, die aus mehreren Ausdrücken und mehreren Bedingungen bestehen. Im Prozess haben wir auch erfahren, wie Sie reguläre Ausdrücke verwenden, um einen Mustervergleich für Zeichenfolgenwerte durchzuführen und eine neue Protokolldefinition zu erstellen, indem sie eine vorhandene klonen.
Hoffentlich hilft dies, die richtigen Informationen aus Ihren Protokollen besser zu extrahieren.