다음을 통해 공유


HTTP 추적 <httpTracing>

개요

<httpTracing> 요소를 사용하면 들어오는 IIS 요청에 대한 선택적 요청 기반 이벤트 추적을 구성할 수 있습니다. <httpTracing> 에는 <traceUrls> 요소 컬렉션 <add> 이 포함된 요소가 포함되어 있습니다. 각 <add> 요소는 추적을 사용하도록 설정하는 고유한 URL을 정의합니다.

참고

ETW(Windows용 이벤트 추적)는 운영 체제에서 제공하는 범용 고속 추적 시설입니다. ETW는 커널에 구현된 버퍼링 및 로깅 메커니즘을 사용하여 사용자 모드 애플리케이션과 커널 모드 디바이스 드라이버 모두에서 발생하는 이벤트에 대한 추적 메커니즘을 제공합니다. 또한 ETW를 사용하면 동적으로 로깅을 사용하거나 사용하지 않도록 설정할 수 있으므로 다시 부팅하거나 애플리케이션을 다시 시작하지 않고도 프로덕션 환경에서 자세한 추적을 쉽게 수행할 수 있습니다. 로깅 메커니즘은 비동기 기록기 스레드에 의해 디스크에 기록되는 프로세서별 버퍼를 사용합니다. 이를 통해 대규모 서버 애플리케이션은 최소한의 방해가 있는 이벤트를 작성할 수 있습니다.

참고

IIS 요청 기반 ETW를 사용하도록 설정하려면 TracingModule을 설치합니다.

기본적으로 IIS는 공급자 IIS 를 통해 모든 URL에 대한 요청 기반 ETW 이벤트를 내보냅니다. GUID 가 {3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83} 인 WWW Server(자세한 정보는 요소에서 <traceProviderDefinitions> 찾을 수 있음). 요소 아래 <httpTracing> 의 컬렉션에서 지정한 ETW에 <traceUrls> 대한 URL 필터를 사용하도록 설정하려면 ETW 세션을 실행할 때 추적 플래그의 첫 번째(가장 중요하지 않은) 비트를 1로 설정해야 합니다. 예를 들어 컬렉션에 <traceUrls> 구성된 URL에 대해서만 IIS 요청 기반 ETW 이벤트를 사용하도록 설정하려면 공급자 IIS: WWW Server를 사용하여 ETW 세션에 대한 추적 플래그를 0xFFFFFFFF 설정합니다. 이러한 추적 플래그를 사용하면 모든 추적 영역뿐만 아니라 URL 필터도 사용할 수 있습니다. 모든 URL에 대해 동일한 이벤트를 사용하도록 설정하려면 추적 플래그를 대신 0xFFFFFFE 설정합니다.

참고

요소 아래 <httpTracing><traceUrls> 컬렉션에 정의된 URL 필터는 IIS 요청 기반 ETW에만 영향을 줍니다. 실패한 요청 추적에는 영향을 주지 않습니다.

호환성

버전 참고
IIS 10.0 <httpTracing> 요소가 IIS 10.0에서 수정되지 않았습니다.
IIS 8.5 <httpTracing> 요소가 IIS 8.5에서 수정되지 않았습니다.
IIS 8.0 <httpTracing> 요소가 IIS 8.0에서 수정되지 않았습니다.
IIS 7.5 <httpTracing> 요소가 IIS 7.5에서 수정되지 않았습니다.
IIS 7.0 요소는 <httpTracing> IIS 7.0에서 도입되었습니다.
IIS 6.0 해당 없음

설치 프로그램

요소는 <httpTracing> IIS 7의 기본 설치에 포함됩니다.

방법

IIS 7의 요소에 <httpTracing> 대한 사용자 인터페이스가 없습니다. 프로그래밍 방식으로 요소에 <httpTracing> 액세스하는 방법에 대한 예제는 이 문서의 코드 샘플 섹션을 참조하세요.

구성

ApplicationHost.config 파일의 서버 수준 또는 Web.config 파일의 사이트, 애플리케이션 또는 디렉터리 수준에서 요소를 구성할 <httpTracing> 수 있습니다.

특성

없음

자식 요소

요소 Description
traceUrls 선택적 요소입니다.

요청 기반 ETW 추적을 사용하도록 설정할 URL을 지정합니다.

구성 샘플

다음 예제에서는 기본 웹 사이트의 루트에 있는 Web.config 파일에 배치할 때 IIS 7과 함께 제공되는 샘플 홈페이지에 대해 추적을 사용하도록 설정합니다.

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

샘플 코드

다음 예제에서는 해당 사이트의 컬렉션에 항목을 추가하여 Contoso라는 웹 사이트에서 IIS 7과 함께 제공되는 샘플 홈페이지에 대해 추적을 <traceUrls> 사용하도록 설정합니다.

AppCmd.exe

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

참고

AppCmd.exe 사용하여 이러한 설정을 구성할 때 commit 매개 변수 apphost 를 로 설정해야 합니다. 그러면 구성 설정이 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()