IIS Failed Request Tracing
Auf der Seite IIS - Webserver Troubleshooting habe ich einige Möglichkeiten zur Analyse von IIS-Problemen beschrieben. Für das aus meiner Sicht sehr leistungsfähige Feature "IIS Failed Request Tracing" habe ich aber eine eigene Seite spendiert.
Einsatz
Oftmals sehen Sie im IISLog zwar die Zugriffe mit der URL und die Fehlercodes aber keine Details. Wenn Sie z.B. viele 401-Fehler sehen, dann können Sie im Windows Security Eventlog vielleicht ermitteln, welche NTLM-Anmeldungen fehlgeschlagen sind, aber der 401-Fehler an sich kann auch andere fehlerhafte Anmeldungen berichten. Hier wäre es dann hilfreich, wenn wir als Administrator z.B. den Request des Clients im Klartext, die Verarbeitung durch den IIS und die Rückantwort an den Client analysieren könnten.
Bei unterschlüsselten Verbindungen können Sie auch per WireShark die TCP-Connection mitschneiden aber da heute alles per HTTPS/TLS verschlüsselt ist, fällt diese Möglichkeit immer häufiger aus. Hier komme dann das "IIS Failed Request Tracing" zum Einsatz.
Installation
Voraussetzung ist, dass Sie das Feature "Tracing" installiert haben
Aktivierung pro Webseite
Im zweiten Schritt muss das Features auf der jeweiligen Webseite noch aktiviert werden.
Aktivierung pro Verzeichnis
Und dann müssen Sie auf dem jeweiligen virtuellen Verzeichnis ebenfalls noch genauer hinterlegen, welche Fehler sie denn protokollieren lassen wollen.
Auswerten
Das Ergebnis sind dann für jeden Request, auf den die Bedingungen zutreffen, entsprechende XML-Dateien in dem anfangs angegebenen Pfad.
Probieren Sie es einfach mal aus. Es ist schon erstaunlich wie detailliert diese XML-Dateien in einem Internet Explorer den Ablauf der Anforderung ausgeben. Fast immer finden Sie heraus, warum und wo der Fehler aufgetreten ist. Sehr oft kann man sogar erkennen, an welcher Stelle eine Anfrage getrödelt hat. Also auch für Performanceprobleme kann dies ein erster Ansatz sein. Richten Sie bitte diese Funktion aber nicht für "jeden" Request ein und vergessen Sie nicht die Funktion nach ein paar Ausgaben wieder abzuschalten. Diese zusätzliche Arbeit belastet den Server durchaus.
Zudem kann es ziemlich mühsam sein, die "richtigen" Dateien ausfindig zu machen. Daher habe ich mir ein kleines Skript welches zu jeder Datei die URLs etc. ausgibt:
param ( $path = "C:\inetpub\logs\FailedReqLogFiles\W3SVC1" ) Write-Verbose "Gettings Files from $($path)" foreach ($file in (get-childitem "$($path)/*.xml")){ Write-Verbose "Processing $($file.name)" $content = [xml](get-content $file) $content.failedRequest | select @{name="Filename"; expr={$file.name}},verb,statuscode,url,authenticationtype,username }
So kann ich dann zumindest anhand der URLs etc. schnell weiter filtern und die nicht erforderlichen Dateien gleich wieder löschen, z.B. mit
.\parse-freblogs.ps1 ` | where {$_.url -eq "https://localhost:443/ews/"} ` | Foreach {Remove-Item "C:\inetpub\logs\FailedReqLogFiles\W3SVC1\$($_.filename)"} .\parse-freblogs.ps1 ` | where {$_.url -like "*healthcheck.htm"} ` | Foreach {Remove-Item "C:\inetpub\logs\FailedReqLogFiles\W3SVC1\$($_.filename)"}
Gerade auf einem Exchange Server gibt es doch relativ viel Grundrauschen durch die Selbstüberwachung (Exchange 2013 Managed Availability) auf healtcheck.htm.
- Troubleshoot IIS7 errors like a pro
http://mvolo.com/blogs/serverside/archive/2007/07/26/Troubleshoot-IIS7-errors-like-a-pro.aspx - Where did my IIS7 server go? Troubleshooting "service unavailable" errors
http://mvolo.com/blogs/serverside/archive/2006/10/19/Where-did-my-IIS7-server-go_3F00_-Troubleshooting-_2200_service-unavailable_2200_-errors.aspx - Troubleshooting Failed Requests using Tracing in IIS
7
http://www.iis.net/articles/view.aspx/IIS7/Managing-IIS7/Diagnostics-in-IIS7/Using-Failed-Request-Tracing/Troubleshooting-Failed-Requests-using-Tracing-in-I. - Making Failed Request Tracing More Approachable
http://blogs.iis.net/bills/archive/2006/10/19/Making-Failed-Request-Tracing-More-Approachable.aspx - Troubleshooting Failed Requests using Tracing in IIS
7
http://learn.iis.net/page.aspx/266/troubleshooting-failed-requests-using-tracing-in-iis-7/ - Troubleshooting HTTP 500.19 Errors in IIS 7
http://blogs.iis.net/webtopics/archive/2010/03/08/troubleshooting-http-500-19-errors-in-iis-7.aspx - Troubleshooting a simple error message using FREB
http://blogs.msdn.com/b/webtopics/archive/2009/06/12/troubleshooting-a-simple-error-message-using-freb.aspx -
Reading a FREB log, a Failed Request Tracing: IIS
request processing pipeline execution
https://techcommunity.microsoft.com/t5/iis-support-blog/reading-a-freb-log-a-failed-request-tracing-iis-request/ba-p/1349639 - FREB Viewer
http://www.iis.net/downloads/community/2014/02/freb-viewer - Recovering FREB.XSL after deleting it
https://blogs.iis.net/davcox/recovering-freb-xsl-after-deleting-it
FEB.XML in Edge anzeigen
Früher konnten Sie die XML-Dateien per Doppelklick im Internet Explorer anzeigen lassen.
Allerdings ist der IE mittlerweile natürlich veraltet. Der neue Edge-Browser zeigt aber nur hier nur eine leere Seite, weil er aus Sicherheitsgründen keine "file://-Urls" mehr mit öffnet. Und genau das ist der Verweis auf die XSLT-Datei. Starten Sie daher den Edge mit folgendem Parameter:
start msedge.exe --allow-file-access-from-files
Dazu müssen vorher aber alle Edge-Instanzen geschlossen sein.
- XML und XSLT
- Restrictions on File Urls
https://textslashplain.com/2019/10/09/navigating-to-file-urls/ - Allow a directory tree to be treated as
a single origin (loosen file: URL
restrictions)
https://issues.chromium.org/issues/40081798
Weitere Links
- IIS - Webserver Troubleshooting
- Fiddler
- Exchange ActiveSync Server
- EWS
- IISLOCKDown
- Outlook Webzugriff
- RBAC
- WinRM
- HTTP Authentication
- Dreimal 401 mit Negotiate
-
PoPToken
MSGraph erlaubt neben Bearer auch PoPTokens. Was steckt dahinter? -
Capture a browser trace for troubleshooting
https://docs.microsoft.com/en-us/azure/azure-portal/capture-browser-trace -
Troubleshooting a simple error message using FREB
https://techcommunity.microsoft.com/t5/iis-support-blog/troubleshooting-a-simple-error-message-using-freb/ba-p/347422 -
Reading a FREB log, a Failed Request Tracing: IIS
request processing pipeline execution
https://techcommunity.microsoft.com/t5/iis-support-blog/reading-a-freb-log-a-failed-request-tracing-iis-request/ba-p/1349639 -
FREB:
LOG_FILE_MAX_SIZE_TRUNCATE
http://blogs.msdn.com/b/robert_mcmurray/archive/2008/03/08/freb-log-file-max-size-truncate.aspx -
SPNEGO-based Kerberos and NTLM HTTP Authentication in
Microsoft Windows
http://www.rfc-archive.org/getrfc.php?rfc=4559 -
Freimütiges über Webhosting auf Windows
http://blogs.technet.com/b/bernhard_frank/ -
Lernen | Schulungsmaterialien IIS7
http://blogs.technet.com/b/bernhard_frank/archive/2010/03/30/lernen-schulungmaterialien-iis7.aspx -
TechNet Virtual Labs
http://technet.microsoft.com/en-us/virtuallabs/default.aspx -
Managing IIS Log File Storage
https://learn.microsoft.com/en-us/iis/manage/provisioning-and-managing-iis/managing-iis-log-file-storage