Le fonctionnement de FREB ou comment investiguer une erreur HTTP sous IIS 7/7.5

Bonjour,

Il arrive parfois, lorsque l'on met en place une application sous IIS, que certaines erreurs soient remontées sans que l'on puisse obtenir plus de précisions que le code retour de celles-ci.
Cela est un bon début mais il est bien souvent insuffisant pour trouver la cause de notre problème.

Par exemple, on obtient une erreur "500 – Erreur interne au serveur" dans Internet Explorer à partir d'un poste client.
On ne connait pas le sous-statut de l'erreur pour des raisons de sécurité.

Exécutons la page directement sur le serveur, en local.
On obtient alors le sous-statut ainsi qu'un message un peu plus complet : "500.19 - Les données de configuration ne sont pas valides".
Avec un peu de chances vous pourrez même directement voir quel module pose problème.

Si vous ne pouvez pas tester la page en locale sur le serveur web ou si le problème ne se reproduit pas en local, on peut également obtenir cette information en allant vérifier le sous-statut de l'erreur 500 dans les logs IIS "C:\inetpub\logs\LogFiles\W3SVC[ID_DU_SITE_WEB]".
Il suffit ensuite d'aller voir sur le site https://support.microsoft.com/kb/943891 pour savoir à quoi ce code correspond.

Quoi qu'il en soit, dans les deux méthodes décrites, il est impossible de définir ce qu'il se passe avec précision.
C'est alors que FREB entre en scène.

FREB ("Règles de suivi des demandes ayant échoué" en Français ou "Failed Request Tracing Rules" en Anglais) :
A l'origine il devait s'appeler "Failed Request Event Buffering" c'est pourquoi nous parlons toujours de FREB qui est un acronyme plus sympathique que FRTR…
FREB est un outil de tracing, qui permet de générer un rapport en fonction de certains critères comme le code retour HTTP ou le temps d'exécution de la requête.
Il contient le chemin emprunté par une requête à l'intérieur du pipeline d'exécution de IIS.
Cela veut dire que l'on va savoir dans quel module la requête est passée, combien de temps cela lui a pris et surtout s'il y a eu un souci à l'exécution ou non.

  • Installation

FREB s'installe via le "Server Manager" ou via "Activer ou désactiver des fonctionnalités Windows".
Il est situé dans "Etat de santé et diagnostics > Suivi" / "Health and Diagnostics > Tracing" :

    

  • Utilisation

S'il est installé vous le trouverez dans l'interface de gestion de IIS, au niveau du site web que vous voulez tracer.
Double cliquez dessus pour commencer la configuration.

Par défaut, FREB n'est pas activé comme vous pouvez le voir dans le panneau "Alertes" sur la droite.

Il vous suffit de cliquer un peu en dessous de ce message, sur "Modifier le suivi de site…" / "Edit Site Tracing", de cocher "Activer" / "Enable" et de cliquer sur OK.
L'alerte doit alors disparaître.
Remarque 1 : Vous pouvez modifier le répertoire d'enregistrement des rapports si vous le désirez
Remarque 2 : "Nombre maximal de fichiers de suivi :" indique le nombre maximal de fichiers que FREB gardera pour une règle donnée. Si la valeur est dépassée, les fichiers les plus anciens seront effacés.

Pour ajouter une règle, cliquez sur "Ajouter…" / "Add…" dans le panneau "Actions", puis sélectionnez le contenu pour lequel vous voulez générer un rapport, puis cliquez sur "Suivant" :

Sélectionnez la condition sur laquelle vous voulez générer un rapport (Par exemple : sur le code retour HTTP ou la durée d'exécution de la requête), puis cliquez sur "Suivant" :

Laissez l'ensemble des fournisseurs / providers cochés et cliquez sur "Terminer" :

Et voilà, votre règle est maintenant configurée.
Si vous n'avez pas modifié le répertoire d'enregistrement vous trouverez les rapports dans "C:\inetpub\logs\FailedReqLogFiles\W3SVC[ID_DU_SITE_WEB]".
FREB vous affiche une vue résumée de la trace réalisée. Cela apporte généralement des détails très utiles.

Cependant, vous pourrez récupérer des informations supplémentaires en allant dans "Request Details" et toutes ses sous-rubriques.
Maintenant il ne vous reste plus qu'à analyser les rapports et à en retirer les éléments nécessaires à la résolution de votre incident.
Bien entendu, FREB ne vous donnera pas toutes les réponses à tous vos problèmes, mais cela constitue clairement un bon point de départ pour investiguer une erreur spécifique sur votre application.

Pour votre information, il est possible d'envoyer un rapport FREB et de le lire sur une autre machine que le serveur IIS, mais il faut absolument copier le fichier "FREB.xsl", sinon le rapport sera illisible.

@ Bientôt
Sylvain Lecerf et L'équipe de support IIS Microsoft France