Azure 진단 구성 파일 사용

업데이트 날짜: 2015년 11월

서비스 모델에 진단 모듈을 가져온 다음 진단 데이터를 수집할 데이터 원본을 구성하여 진단 데이터를 수집합니다. 진단 데이터를 수집할 진단 모니터의 구성에 데이터 원본을 추가해야 합니다. 프로그래밍 방식으로 진단 모니터를 구성할 수도 있지만(Azure SDK 2.4 이하 버전에 적용됨) Microsoft Azure SDK를 사용하면 XML 구성 파일(diagnostics.wadcfg)을 사용하여 진단을 구성할 수 있습니다. 이 방법은 코드 작성과 비교하여 다음과 같은 여러 이점이 있습니다.

  1. OnStart 메서드가 실행되기 전에 진단이 시작되므로 시작 작업의 오류를 파악하여 기록할 수 있습니다.

  2. 런타임에서 적용한 구성 변경이 다시 시작한 후에도 유지됩니다.

  3. 코드를 다시 작성할 필요 없이 진단 구성을 변경할 수 있습니다.

  4. 추가 코드(잘못될 경우 예외가 발생하여 역할을 시작하지 못할 수 있음)를 적용할 필요 없이 특정 구성을 사용하여 진단 모니터를 자동으로 시작할 수 있습니다.

기본 진단 동작은 인프라와 추적 로그를 수집하며 저장소로 데이터를 전송하지 않습니다. 기본 데이터 외 추가 데이터를 수집하려면 진단 모니터가 원하는 데이터를 수집하도록 구성해야 합니다.

이 항목에서는 diagnostics.wadcfg XML 구성 파일을 만드는 방법을 설명합니다. 응용 프로그램에서 진단 데이터 원본을 구성하고 저장소에 진단 데이터를 영구 보관하여 저장소에서 데이터를 보는 전체 프로세스에 대한 자세한 내용은 Windows Azure에서 진단 사용을 참조하십시오.

다음 목록에 각 역할 유형별 진단 구성 파일의 위치가 나와 있습니다.

  • 작업자 역할의 경우 구성 파일이 역할의 루트 디렉터리에 있습니다.

  • 웹 역할의 경우 구성 파일이 역할의 루트 디렉터리 아래 bin 디렉터리에 있습니다.

진단 모듈을 가져올 때 이러한 위치 중 하나에 구성 파일이 있으면 진단 모니터가 기본 설정 대신 구성 파일을 사용하여 설정을 구성합니다.

diagnostics.wadcfg 구성 파일은 %ProgramFiles%\Microsoft SDKs\Windows Azure\<SDK>\<VersionNumber>\schemas\DiagnosticsConfig201010.xsd의 스키마를 사용하는 XML 문서입니다. 여기서 <SDK>는 사용하고 있는 개발자 SDK이며 <VersionNumber>는 버전을 나타냅니다. 이 XML 파일의 스키마에 대한 자세한 내용은 Windows Azure 진단 구성 스키마를 참조하십시오.

다음은 diagnostics.wadcfg 구성 파일의 예입니다. 이 구성 파일은 모든 종류의 진단 정보를 수집하므로 응용 프로그램에서 수집하지 않으려는 데이터 원본은 구성 파일에서 삭제해야 합니다.

<?xml version="1.0" encoding="utf-8" ?>
<DiagnosticMonitorConfiguration xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration"
      configurationChangePollInterval="PT1M"
      overallQuotaInMB="4096">

  <DiagnosticInfrastructureLogs bufferQuotaInMB="0"
     scheduledTransferLogLevelFilter="Verbose"
     scheduledTransferPeriod="PT30M" />

  <Logs bufferQuotaInMB="0"
     scheduledTransferLogLevelFilter="Verbose"
     scheduledTransferPeriod="PT30M" />

  <Directories bufferQuotaInMB="0"
     scheduledTransferPeriod="PT30M">  
    <!-- FailedRequestLogs and IISLogs are only relevant to Web roles -->
    <CrashDumps container="wad-crash-dumps" directoryQuotaInMB="0" />
    <FailedRequestLogs container="wad-frq" directoryQuotaInMB="0" />
    <IISLogs container="wad-iis" directoryQuotaInMB="0" />
    <DataSources>
      <DirectoryConfiguration container="diagnostics-custom-logs" directoryQuotaInMB="1024">
        <LocalResource name="MyCustomLogs" relativePath="."/>
      </DirectoryConfiguration>     
    </DataSources>
  </Directories>

  <PerformanceCounters bufferQuotaInMB="0" scheduledTransferPeriod="PT30M">
    <PerformanceCounterConfiguration counterSpecifier="\Memory\Available Bytes" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT30S" />
    <!-- These three elements are only relevant to Web roles -->
    <PerformanceCounterConfiguration counterSpecifier="\Process(w3wp)\% Processor Time" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\Process(w3wp)\Private Bytes" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\Process(w3wp)\Thread Count" sampleRate="PT30S" />
    <!-- These three elements are only relevant to Worker roles -->
    <!-- <PerformanceCounterConfiguration counterSpecifier="\Process(WaWorkerHost)\% Processor Time" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\Process(WaWorkerHost)\Private Bytes" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\Process(WaWorkerHost)\Thread Count" sampleRate="PT30S" /> -->
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR Interop(_Global_)\# of marshalling" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR Loading(_Global_)\% Time Loading" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR LocksAndThreads(_Global_)\Contention Rate / sec" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR Memory(_Global_)\# Bytes in all Heaps" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR Networking(_Global_)\Connections Established" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR Remoting(_Global_)\Remote Calls/sec" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR Jit(_Global_)\% Time in Jit" sampleRate="PT30S" />
  </PerformanceCounters>

  <WindowsEventLog bufferQuotaInMB="0"
     scheduledTransferLogLevelFilter="Verbose"
     scheduledTransferPeriod="PT30M">
    <DataSource name="Application!*" />
    <DataSource name="System!*" />
  </WindowsEventLog>

</DiagnosticMonitorConfiguration>

다음에 진단 데이터 원본을 구성하는 데 사용되는 각 XML 요소가 간단히 설명되어 있습니다.

  • DiagnosticMonitorConfiguration - 로깅 및 진단 정보에 대한 표준 고정 데이터 버퍼의 조합에 대한 정의를 포함합니다. 자세한 내용은 DiagnosticMonitorConfiguration를 참조하세요.

  • DiagnosticInfrastructureLogs – 진단 인프라 로그에 대한 데이터 버퍼의 크기, 전송할 데이터의 수준과 빈도에 대한 정의가 포함됩니다. 자세한 내용은 DiagnosticInfrastructureLogs를 참조하세요.

  • Logs – 기본 Windows Azure 로그에 대한 데이터 버퍼의 크기 및 데이터 전송 수준과 빈도에 대한 정의가 포함됩니다. 자세한 내용은 Logs를 참조하세요.

  • Directories – 정의한 파일 기반 로그에 대한 경로, 데이터 버퍼의 크기, 전송할 데이터의 수준과 빈도에 대한 정의가 포함됩니다. 이 요소에는 특별 디렉터리(CrashDumps, FailedRequestLogs, IISLogs) 및 사용자가 만든 디렉터리(DataSources)가 모두 포함됩니다. 자세한 내용은 Directories를 참조하세요.

  • PerformanceCounters – 성능 카운터 데이터에 대한 카운터 구성, 데이터 버퍼의 크기, 전송할 데이터의 수준과 빈도에 대한 정의가 포함됩니다. 자세한 내용은 PerformanceCounters를 참조하세요.

    note참고
    시작 작업을 사용하여 사용자 지정 성능 카운터를 설치할 경우 카운터를 만들기 전에 진단 모니터가 사용하려고 시도하므로 구성 파일에 카운터 정의를 추가할 수 없습니다.

  • WindowsEventLog – Windows 이벤트에 대한 로그, 데이터 버퍼의 크기, 전송할 데이터의 수준과 빈도에 대한 정의가 포함됩니다. 자세한 내용은 WindowsEventLog를 참조하세요.

표시: