Seguimiento HTTP <httpTracing>
Información general
El elemento <httpTracing>
permite configurar el seguimiento selectivo de eventos basado en solicitudes para las solicitudes IIS entrantes.
<httpTracing>
contiene un elemento <traceUrls>
, que contiene una colección de elementos <add>
.
Cada elemento <add>
define una dirección URL única para permitir el seguimiento.
Nota:
El Seguimiento de eventos para Windows (ETW) es una utilidad de seguimiento de alta velocidad y de uso general proporcionada por el sistema operativo. Gracias al mecanismo de almacenamiento en búfer y registro implementado en el kernel, ETW proporciona un mecanismo de seguimiento para los eventos generados por aplicaciones en modo usuario y controladores de dispositivos en modo kernel. Además, ETW le ofrece la posibilidad de habilitar y deshabilitar el registro dinámicamente, lo que facilita el seguimiento detallado en entornos de producción sin necesidad de arrancar el sistema o reiniciar las aplicaciones. El mecanismo de registro usa búferes por procesador que un subproceso de escritura asincrónico escribe en el disco. Esto permite que las aplicaciones de servidor a gran escala escriban eventos con una alteración mínima.
Nota:
Para habilitar ETW basado en solicitudes de IIS, instale TracingModule.
De forma predeterminada, IIS emite eventos ETW basados en solicitudes para todas las direcciones URL mediante el proveedor IIS: WWW Server con el GUID {3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83} (la información detallada se puede encontrar en el elemento <traceProviderDefinitions>
).
Para habilitar el filtro de direcciones URL para ETW especificado por la colección <traceUrls>
en el elemento <httpTracing>
, el primer bit (menos significativo) de las marcas de seguimiento debe establecerse como 1 al ejecutar una sesión ETW.
Por ejemplo, para habilitar eventos ETW basados en solicitudes de IIS solo para las direcciones URL configuradas en la colección <traceUrls>
, establezca las marcas de seguimiento en 0xFFFFFFFF para una sesión ETW con el proveedor IIS: WWW Server.
Estas marcas de seguimiento habilitan el filtro de direcciones URL, así como todas las áreas de seguimiento.
Para habilitar los mismos eventos para todas las direcciones URL, establezca en su lugar las marcas de seguimiento en 0xFFFFFFE.
Nota:
El filtro de direcciones URL definido en la colección <traceUrls>
bajo el elemento <httpTracing>
solo afecta a ETW basado en solicitudes de IIS y no tiene ningún impacto en el seguimiento de solicitudes con error.
Compatibilidad
Versión | Notas |
---|---|
IIS 10.0 | El elemento <httpTracing> no se modificó en IIS 10.0. |
IIS 8.5 | El elemento <httpTracing> no se modificó en IIS 8.5. |
IIS 8.0 | El elemento <httpTracing> no se modificó en IIS 8.0. |
IIS 7.5 | El elemento <httpTracing> no se modificó en IIS 7.5. |
IIS 7.0 | El elemento <httpTracing> se introdujo en IIS 7.0. |
IIS 6,0 | N/D |
Configuración
El elemento <httpTracing>
se incluye en la instalación predeterminada de IIS 7.
Procedimientos
No hay ninguna interfaz de usuario para el elemento <httpTracing>
para IIS 7. Para obtener ejemplos de cómo acceder al elemento <httpTracing>
mediante programación, consulte la sección Ejemplos de código de este documento.
Configuración
Puede configurar el elemento <httpTracing>
a nivel de servidor en el archivo ApplicationHost.config, o bien a nivel de sitio, aplicación o directorio en un archivo Web.config.
Atributos
Ninguno.
Elementos secundarios
Elemento | Descripción |
---|---|
traceUrls |
Elemento opcional. Especifica la dirección URL para la que desea habilitar el seguimiento ETW basado en solicitudes. |
Ejemplo de configuración
En el ejemplo siguiente se habilitará el seguimiento de la página principal de ejemplo que se incluye con IIS 7 cuando se coloca en un archivo Web.config en la raíz del sitio web predeterminado.
<configuration>
<system.webServer>
<httpTracing>
<traceUrls>
<add value="/iisstart.htm" />
</traceUrls>
</httpTracing>
</system.webServer>
</configuration>
Código de ejemplo
En los ejemplos siguientes se habilita el seguimiento de la página principal de ejemplo que se incluye con IIS 7 en el sitio web denominado Contoso agregando una entrada a la colección <traceUrls>
para ese sitio.
AppCmd.exe
appcmd.exe set config "Contoso" -section:system.webServer/httpTracing /+"traceUrls.[value='/iisstart.htm']" /commit:apphost
Nota:
Debe asegurarse de establecer el parámetro de confirmación en apphost
cuando use AppCmd.exe para configurar estas opciones. Esto confirma los valores de configuración en la sección de ubicación adecuada del archivo ApplicationHost.config.
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection httpTracingSection = config.GetSection("system.webServer/httpTracing", "Contoso");
ConfigurationElementCollection traceUrlsCollection = httpTracingSection.GetCollection("traceUrls");
ConfigurationElement addElement = traceUrlsCollection.CreateElement("add");
addElement["value"] = @"/iisstart.htm";
traceUrlsCollection.Add(addElement);
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetApplicationHostConfiguration
Dim httpTracingSection As ConfigurationSection = config.GetSection("system.webServer/httpTracing", "Contoso")
Dim traceUrlsCollection As ConfigurationElementCollection = httpTracingSection.GetCollection("traceUrls")
Dim addElement As ConfigurationElement = traceUrlsCollection.CreateElement("add")
addElement("value") = "/iisstart.htm"
traceUrlsCollection.Add(addElement)
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var httpTracingSection = adminManager.GetAdminSection("system.webServer/httpTracing", "MACHINE/WEBROOT/APPHOST/Contoso");
var traceUrlsCollection = httpTracingSection.ChildElements.Item("traceUrls").Collection;
var addElement = traceUrlsCollection.CreateNewElement("add");
addElement.Properties.Item("value").Value = "/iisstart.htm";
traceUrlsCollection.AddElement(addElement);
adminManager.CommitChanges();
VBScript
Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set httpTracingSection = adminManager.GetAdminSection("system.webServer/httpTracing", "MACHINE/WEBROOT/APPHOST/Contoso")
Set traceUrlsCollection = httpTracingSection.ChildElements.Item("traceUrls").Collection
Set addElement = traceUrlsCollection.CreateNewElement("add")
addElement.Properties.Item("value").Value = "/iisstart.htm"
traceUrlsCollection.AddElement addElement
adminManager.CommitChanges()