- Artikel
von Saad Ladki
Konfigurieren der Fehlgeschlagenen Anforderungsablaufverfolgung und Protokollierung für ein Hostingszenario
Das Platzieren von Anwendungsinhalten und Code auf einer UNC-Freigabe für Hostingszenarien ist zunehmend wichtig auf Webanwendungsservern. In Hostingszenarien ist es wichtig, die Protokolle neben den Webanwendungsinhalten und -code beizubehalten. Protokolle umfassen die Protokolldateien für die Fehleranforderungsverfolgung sowie die Trefferprotokolle, die IIS für die Website protokolliert. In diesem Dokument werden Sie durch die Erstellung der entsprechenden Verzeichnisse geführt, die richtigen Berechtigungen für sie festgelegt und anschließend IIS für die Verwendung der Verzeichnisse für die verschiedenen Protokolldateien konfiguriert.
Die grundlegenden Benennungskonventionen für die Protokolldateiverzeichnisse, Benutzerkonten und Berechtigungseinstellungen entsprechen dem Dokument "Shared Hosting Walkthrough" auch auf dieser Website. In dieser exemplarischen Vorgehensweise wird auch unterschieden, wie die verschiedenen Aktionen ausgeführt werden:
- Benutzeroberfläche: Verwenden des IIS-Managers oder -Explorers zum Ausführen der Aktion
- CMD: Verwenden der Befehlszeile (PowerShell, AppCmd usw.) zum Ausführen der Aktion
- XML: Manuelles Bearbeiten der Konfiguration zum Ausführen der Aktion.
Konfigurieren der Ablaufverfolgung fehlgeschlagener Anforderungen für ein Hostingszenario
Fehleranforderungsablaufverfolgung ist ein leistungsstarkes Diagnosefeature, das Entwicklern und Administratoren hilft Entwicklern und Administratoren zu bestimmen, wo Probleme in ihren Anwendungen auftreten und warum sie auftreten. Fehler beim Anfordern der Ablaufverfolgung nach der Installation ist von Entwicklern, die nicht Administratoren auf dem Computer sind, sehr schwer zu verwenden. Dieser Abschnitt hilft beim Einrichten der Fehlgeschlagenen Anforderungsablaufverfolgung, um von Entwicklern zugänglich zu sein:
- Entsperren der Abschnitte, die erforderlich sind, damit Entwickler ihre eigenen fehlgeschlagenen Anforderungsablaufverfolgungsregeln für ihre Anwendungen definieren können
- Einrichten der Fehlgeschlagenen Anforderungsablaufverfolgung zum Protokollieren bei einer UNC-Freigabe für den Anwendungsbesitzer
Delegieren von <traceFailedRequests an Nichtadministratoren>
Denken Sie daran, dass zwei verschiedene Konfigurationsabschnitte für die Fehleranforderungsablaufverfolgung vorhanden sind:
<traceFailedRequestsLogging>
: Dieser Abschnitt ist immer auf IIS-Administratoren beschränkt. In diesem Abschnitt können Administratoren das Feature für die Fehleranforderungsablaufverfolgung für eine Website aktivieren oder deaktivieren, die maximale Anzahl von Protokolldateien, die Größe der Protokolldateien und das Verzeichnis konfigurieren, in dem die Protokolldateien leben sollen. Aus diesen Gründen müssen Administratoren (d. h. steuern, dass der Datenträger mit Protokolldateien gefüllt werden kann) die Kontrolle über diesen Abschnitt behalten.<traceFailedRequests>
: In diesem Abschnitt erstellen Sie Ihre Fehlerdefinitionen – welche URLs zum Erfassen von Ablaufverfolgungen und unter welchen Bedingungen diese Ablaufverfolgungen auf dem Datenträger als XML speichern sollen. Dies ist der Abschnitt, den wir entsperren können.
Nach der Installation des Moduls für fehlgeschlagene Anforderungsablaufverfolgung (siehe Problembehandlung fehlgeschlagene Anforderungen mithilfe der Ablaufverfolgung auf IIS.net für Informationen zur Installation und grundlegende Verwendung der Fehleranforderungsablaufverfolgung) ist der <traceFailedRequests>
Abschnitt bereits für Lese-/Schreibberechtigungen festgelegt. Dadurch können Anwendungsbesitzer ihre eigenen Regeln für die Fehleranforderungsablaufverfolgung definieren, ohne dass der Administrator diese Regeln für sie definiert.
UI: Überprüfen der <TraceFailedRequests-Delegierung> vom IIS-Manager
Gehen Sie wie folgt vor, um zu überprüfen, ob <traceFailedRequests> für die Delegierung auf der IIS-Manager-Benutzeroberfläche eingerichtet wurde:
- Klicken Sie auf "Start", und geben Sie in inetmgr ein. Geben Sie Administratoranmeldeinformationen ein, wenn Sie noch nicht Administrator sind.
- Klicken Sie auf den Computernamen und dann auf die Featuredelegierung.
- Stellen Sie sicher, dass Fehleranforderungsverfolgungsregeln auf Lese-/Schreibzugriff festgelegt sind.
Dadurch können Entwickler, die keinen Zugriff auf ApplicationHost.config haben, eigene Fehlerdefinitionen in ihrer Anwendung web.config Dateien erstellen. Nur wenn der Administrator die Fehleranforderungsablaufverfolgung aktiviert, werden die Regeln wirksam.
XML: Überprüfen der <TraceFailedRequests-Delegierung> in ApplicationHost.config
Gehen Sie wie folgt vor, um zu überprüfen, ob <traceFailedRequests> für die Delegierung über ApplicationHost.config eingerichtet wurde:
- Starten Sie eine Eingabeaufforderung mit erhöhten Rechten.
- Ändern Sie Verzeichnisse in
%windir%\system32\inetsrv\config
, und führen Sie sie ausnotepad applicationHost.config
. - Suchen Sie in applicationHost.config nach dem Zeichenfolgenabschnittsnamen<="traceFailedRequests" – dieser Abschnitt wird delegiert, wenn er außer Kraft gesetzt wird.
<configSections>...other config sectionGroups... <sectionGroup name="system.webServer"> ...other sections... <sectionGroup name="tracing"> <section name="traceFailedRequests" overrideModeDefault="Allow" /> ... </sectionGroup> ... </sectionGroup></configSections>
Damit IIS seine Fehlgeschlagenen Anforderungsprotokolldateien in eine UNC-Freigabe schreiben kann, muss die Arbeitsprozessidentität vollzugriff auf die Netzwerkfreigabe und den Dateisystempfad auf dem UNC-Server erteilt werden. Dies liegt daran, dass sie Verzeichnisinhalte auflisten, neue Protokolldateien und Verzeichnisse erstellen und alte Protokolldateien löschen müssen.
Wenn Sie eines der integrierten Konten (z. B. IUSR oder Netzwerkdienst) als Anwendungspool-ID verwenden, werden diese Konten auf dem UNC-Server als ANONYM angezeigt. Es wird dringendempfohlen , entweder:
- DOMÄNENNUTZUNG : Erstellen Sie ein Domänenbenutzerkonto für den Anwendungspool, und verwenden Sie dann diese Anwendungspool-ID, um das Freigabe- und Dateisystemverzeichnis zu senken, in dem die Fehleranforderungsprotokolldateien leben. Sowohl der Webserver als auch der UNC-Server müssen Mitglieder der Domäne sein.
- NICHT-DOMÄNENNUTZUNG : Wenn die UNC- und Webserver nicht mit der Domäne verbunden sind, muss dasselbe Konto mit demselben Kontokennwort auf jedem Computer erstellt werden. Dies ist das Beispiel, das in dieser exemplarischen Vorgehensweise verwendet wird.
UI: Erstellen des neuen lokalen Kontos auf dem UNC-Server und Front-End-Webserver
Diese Wegbeschreibungen sollten sowohl auf dem UNC-Server als auch auf dem Webserver wiederholt werden. Erstellen Sie einen Benutzer namens "PoolId1", dessen Kennwort "!p4ssw0rd" lautet.
Führen Sie an einer Eingabeaufforderung mit erhöhten Rechten start lusrmgr.msc aus.
Klicken Sie mit der rechten Maustaste auf den Ordner "Benutzer ", und wählen Sie "Neuer Benutzer" aus.
Füllen Sie die Dialogfeldeinträge "Neuer Benutzer " wie folgt aus:
Benutzername : PoolId1
Kennwort (& Kennwort bestätigen) : !p4ssw0rd
Deaktivieren Sie "Benutzer muss Kennwort bei der nächsten Anmeldung ändern"
Überprüfen "Kennwort kann vom Benutzer nicht geändert werden"
Klicken Sie auf "Erstellen", und schließen Sie dann.
Stellen Sie sicher, dass Sie den PoolId1-Benutzer sowohl auf dem FRONT-End-IIS-Webserver & als auch auf dem UNC-Server des Back-End-Servers erstellen. Sie müssen auch die PoolId1 zur gruppe IIS_IUSRS auf dem Front-End-Webserver hinzufügen. Gehen Sie folgendermaßen vor:
- Klicken Sie auf den Ordner "Gruppen" im Lusrmgr MMC-Snapin.
- Klicken Sie mit der rechten Maustaste auf IIS_IUSRS, und wählen Sie " Zu Gruppe hinzufügen" aus.
- Klicken Sie auf "Hinzufügen", und fügen <Sie dann "Servername>\PoolId1" als hinzuzufügende Identität ein.
CMD: Erstellen des neuen lokalen Kontos auf dem UNC-Server und Front-End-Webserver
Gehen Sie wie folgt vor, um die neue PoolId1-Identität aus der Befehlszeile hinzuzufügen:
Führen Sie eine Administratoreingabeaufforderung mit erhöhten Rechten aus.
Führen Sie im Eingabeaufforderungsfenster die folgenden Befehle aus:
net user PoolId1 !p4ssw0rd /ADD /passwordchg:nonet localgroup IIS_IUSRS PoolId1 /ADD
Hinweis
Der Befehl "net localgroup" ist nur auf dem Front-End-Webserver erforderlich.
Benutzeroberfläche: Erstellen eines neuen Anwendungspools für die Website und Ändern der Identität
Teil der richtlinien für gemeinsame Hostings, die das IIS-Team erstellt, ist ein neuer Anwendungspool; legen Sie seine Identität auf " PoolId1" fest, die wir gerade erstellt haben.
- Führen Sie auf dem IIS-Front-End-Server Start-Inetmgr> aus.
- Klicken Sie auf den Knoten "Anwendungspools" auf der Benutzeroberfläche, und wählen Sie dann unter "Aktionen ->Anwendungspool hinzufügen" aus...
- Geben Sie den Namen Pool_Site1, lassen Sie alle anderen Einstellungen allein, und klicken Sie auf 'OK'.
- Klicken Sie mit der rechten Maustaste auf die Pool_Site1 , und wählen Sie "Erweiterte Einstellungen" aus...
- Wählen Sie unter "Prozessmodell" die Zeile "Identität " und dann auf der Schaltfläche " ... " aus.
- Klicken Sie auf die Schaltfläche "Festlegen ", und konfigurieren Sie die benutzerdefinierte Identität , um unserer soeben erstellten Benutzeridentität - PoolId1 zu entsprechen. Klicken Sie erneut auf 'OK ' und ' OK ', um die Identität des Anwendungspools zu ändern. Folgendes wird angezeigt:
Wir müssen auch eine Website in diesen Anwendungspool ablegen. Verwenden Sie die Standardwebsite für die Zwecke dieser exemplarischen Vorgehensweise. Sie können auch eine neue Website für diese (SITE1) über INETMGR.exe erstellen. Gehen Sie folgendermaßen vor:
- Klicken Sie auf den Ordner "Websites ", und klicken Sie dann auf der Standardwebsite.
- Wählen Sie im rechten Bereich "Aktionen " die Option "Grundlegende Einstellungen" aus...
- Rechts neben dem Anwendungspool: Klicken Sie auf "Auswählen"...
- Wählen Sie den neuen Pool_Site1 Anwendungspool aus, den wir gerade erstellt haben, und klicken Sie auf 'OK', und klicken Sie dann erneut auf 'OK '.
CMD: Erstellen eines neuen Anwendungspools für die Website und Ändern der Identität
Gehen Sie folgendermaßen vor:
Starten Sie eine Eingabeaufforderung mit erhöhten Rechten.
Führen Sie zum Hinzufügen des neuen Anwendungspools den folgenden Befehl aus:
%windir%\system32\inetsrv\appcmd add AppPool -name:Pool_Site1 -processModel.username:ERICDE-DELL-W\PoolId1 -processModel.password:!p4ssw0rd -processModel.identityType:SpecificUser
Um die Stammanwendung der Standardwebsite festzulegen, die in Pool_Site1 ausgeführt werden soll, führen Sie den folgenden Befehl aus:
%windir%\system32\inetsrv\appcmd set app -app.name:"Default Web Site/" -applicationPool:Pool_Site1
Erstellen und sperren Sie nun das UNC-Dateisystemverzeichnis & .
Führen Sie auf dem UNC-Server folgendes aus:
Erstellen Sie einen Dateisystempfad (rufen Sie ihn auf), wo wir den Inhalt abbilden.
Erstellen Sie darunter ein neues Verzeichnis namens "Site1" und unter diesem anderen Verzeichnis namens "Protokolle" und das endgültige Verzeichnis " failedReqLogFiles". Was Sie sehen sollten, ist:
g:\inhalt
Site1
Logs
- failedReqLogFIles
Legen Sie auf g:\content\Site1\Logs\failedReqLogFiles die Berechtigungen im Dateisystempfad fest, um dem PoolId1 die vollständige Kontrolle über das Protokollverzeichnis zu gewähren. Dies ist erforderlich, da die Arbeitsprozessidentität Inhalte auflisten können, neue Dateien schreiben, neue Verzeichnisse erstellen und alte Dateien löschen können. Führen Sie dazu aus einer Administratoreingabeaufforderung mit erhöhten Rechten den folgenden Befehl aus:
Windows Server® 2003 Fileserver:
icacls g:\content\Site1\Logs\failedReqLogFiles /g PoolId1:F
Windows Server 2003 Fileserver:
cacls g:\content\Site1\Logs\failedReqLogFiles /g PoolId1:F /e
Teilen Sie das Verzeichnis aus. Führen Sie in der Befehlszeile folgendes aus:
net share content$=g:\content /GRANT:Users,CHANGE
Festlegen der Fehlgeschlagenen Anforderungsablaufverfolgung zum Protokollieren des UNC-Pfads
Nachdem die Freigabe freigegeben wurde und die richtigen Berechtigungen eingerichtet wurden, konfigurieren Sie fehlerlose Anforderungsverfolgung, um sich beim UNC-Pfad anzumelden.
Benutzeroberfläche: Konfigurieren der Fehlgeschlagenen Anforderungsverfolgung zum Anmelden bei UNC
Gehen Sie wie folgt vor, um die Fehleranforderungsverfolgung zu konfigurieren, um sich mit unserem UNC-Pfad anzumelden:
Öffnen Sie INETMGR, indem Sie Start-Inetmgr> ausführen.
Klicken Sie auf "Standardwebsite", und klicken Sie dann unter "Konfigurieren " auf "Fehlgeschlagene Anforderungsablaufverfolgung"...
Aktivieren Sie das Kontrollkästchen "Aktiviert ".
Geben Sie unter Verzeichnis den Pfad zur UNC-Freigabe ein ->
\\<UncServerName>\UNCContent\Site1\Logs\FailedReqLogFiles
Testen
Konfigurieren Sie eine Regel, um alle 200s für alle URLs für alle Inhalte zu erfassen, um einen Test auszuführen.
- Erweitern Sie in der INETMGR-Benutzeroberfläche erneut den Ordner "Websites" , und klicken Sie auf "Standardwebsite".
- Doppelklicken Sie auf fehlgeschlagene Anforderungsablaufverfolgungsregeln.
- Klicken Sie unter "Aktionen " rechts auf "Hinzufügen"...
- Klicken Sie auf "Weiter", und legen Sie den Statuscode auf 200 fest:
- Klicken Sie auf "Weiter", und verlassen Sie den Standard, um alles zu sammeln, und klicken Sie dann auf "Fertig stellen".
XML: Konfigurieren der Regel für die Fehlgeschlagene Anforderungsablaufverfolgung in web.config
Die tatsächliche XML sieht wie folgt in der datei web.config für die Standardwebsite aus:
<?xml version="1.0" encoding="UTF-8"?><configuration> <system.webServer> <tracing> <traceFailedRequests> <add path="*"> <traceAreas> <add provider="ASP" verbosity="Verbose" /> <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" /> <add provider="ISAPI Extension" verbosity="Verbose" /> <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications" verbosity="Verbose" /> </traceAreas> <failureDefinitions statusCodes="200" /> </add> </traceFailedRequests> </tracing> </system.webServer></configuration>
Überprüfen des UNC-Back-End
Navigieren Sie zur Website, die wir eingerichtet haben, um fehlerlose Anforderungsablaufverfolgungsregeln für den UNC-Pfad zu protokollieren (z. B http://uncsite/default.aspx
. ). Überprüfen Sie das UNC-Back-End-Serververzeichnis, in dem Sie protokollieren. Beachten Sie, dass ein neues Verzeichnis namens W3SVC1 innerhalb des konfigurierten Konfigurierten Anforderungsprotokolldateiverzeichnis erstellt wurde. Navigieren Sie zu diesem Verzeichnis, und sehen Sie die Protokolldatei und die FREB.xsl-Datei.