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()