Rastreamento HTTP <httpTracing>

Visão geral

O elemento <httpTracing> permite configurar o rastreamento seletivo de eventos baseados em solicitação para solicitações IIS de entrada. <httpTracing> contém um elemento <traceUrls>, que contém uma coleção de elementos <add>. Cada elemento <add> define uma URL exclusiva para habilitar o rastreamento.

Observação

O ETW (Rastreamento de Eventos para Windows) é um recurso de rastreamento de alta velocidade de uso geral fornecido pelo sistema operacional. Usando um mecanismo de buffer e registro em log implementado no kernel, o ETW fornece um mecanismo de rastreamento para eventos gerados por aplicativos no modo de usuário e drivers de dispositivo no modo kernel. Além disso, o ETW oferece a capacidade de habilitar e desabilitar o registro em log dinamicamente, facilitando a execução de rastreamento detalhado em ambientes de produção, sem a necessidade de inicializações ou reinicializações de aplicativo. O mecanismo de registro em log usa buffers por processador que são gravados em disco por um thread de gravador assíncrono. Isso permite que aplicativos de servidor em grande escala gravem eventos com o mínimo de interferência.

Observação

Para habilitar o ETW baseado em solicitação do IIS, instale o TracingModule.

Por padrão, o IIS emite eventos ETW baseados em solicitação para todas as URLs por meio do provedor IIS: WWW Server com GUID {3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83} (as informações detalhadas podem ser encontradas no elemento <traceProviderDefinitions>). Para habilitar o filtro de URL para ETW especificado pela coleção <traceUrls> no elemento <httpTracing>, o primeiro bit (menos significativo) dos sinalizadores de rastreamento deve ser definido como 1 ao executar uma sessão ETW. Por exemplo, para habilitar eventos ETW baseados em solicitação do IIS somente para as URLs configuradas na coleção <traceUrls>, defina os sinalizadores de rastreamento como 0xFFFFFFFF para uma sessão ETW com o provedor IIS: Servidor WWW. Esses sinalizadores de rastreamento habilitam o filtro de URL, bem como todas as áreas de rastreamento. Para habilitar os mesmos eventos para todas as URLs, defina os sinalizadores de rastreamento como 0xFFFFFFE.

Observação

O filtro de URL definido na coleção <traceUrls> no elemento <httpTracing> afeta apenas o ETW baseado em solicitação do IIS e não tem impacto no rastreamento de solicitação com falha.

Compatibilidade

Versão Observações
IIS 10.0 O elemento <httpTracing> não foi modificado no IIS 10.0.
IIS 8.5 O elemento <httpTracing> não foi modificado no IIS 8.5.
IIS 8.0 O elemento <httpTracing> não foi modificado no IIS 8.0.
IIS 7.5 O elemento <httpTracing> não foi modificado no IIS 7.5.
IIS 7.0 O elemento <httpTracing> foi introduzido no IIS 7.0.
IIS 6,0 N/D

Instalação

O elemento <httpTracing> está incluído na instalação padrão do IIS 7.

Instruções

Não há nenhuma interface do usuário para o elemento <httpTracing> para IIS 7. Para obter exemplos de como acessar o elemento <httpTracing> programaticamente, consulte a seção Exemplos de Código desse documento.

Configuração

Você pode configurar o elemento <httpTracing> no nível do servidor no arquivo ApplicationHost.config ou no nível do site, do aplicativo ou do diretório em um arquivo Web.config.

Atributos

Nenhum.

Elementos filho

Elemento Descrição
traceUrls Elemento opcional.

Especifica a URL para a qual você deseja habilitar o rastreamento ETW baseado em solicitação.

Exemplo de configuração

O exemplo a seguir habilitará o rastreamento para a home page de exemplo que é fornecida com o IIS 7, quando colocada em um arquivo Web.config na raiz do Site Padrão.

<configuration>
   <system.webServer>
      <httpTracing>
         <traceUrls>
            <add value="/iisstart.htm" />
         </traceUrls>
      </httpTracing>
   </system.webServer>
</configuration>

Exemplo de código

Os exemplos a seguir permitem o rastreamento da home page de exemplo que é fornecida com o IIS 7 no site chamado Contoso, adicionando uma entrada à coleção <traceUrls> desse site.

AppCmd.exe

appcmd.exe set config "Contoso" -section:system.webServer/httpTracing /+"traceUrls.[value='/iisstart.htm']" /commit:apphost

Observação

Defina o parâmetro commit para apphost quando usar AppCmd.exe para definir essas configurações. Isso confirma as definições de configuração para a seção de local apropriado no arquivo 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()