Azure 診断の構成ファイルの使用

更新日: 2015年11月

診断データの収集は、診断モジュールをサービス モデルにインポートし、診断データの収集先のデータ ソースを構成して行います。診断データを収集するには、診断モニターの構成にデータ ソースを追加する必要があります。診断モニターはプログラムで構成できます (Azure SDK 2.4 以前に適用されます)。ただし、Microsoft Azure SDK では、XML 構成ファイル (diagnostics.wadcfg) を使用して診断を構成できます。この方法は、コードを記述する方法に比べて、多くの利点があります。

  1. OnStart メソッドを実行する前に診断が始まるため、スタートアップ タスクでのエラーをキャッチして記録できます。

  2. 実行時に構成に加えた変更が再起動後も維持されます。

  3. 診断構成を変更するために、コードをリビルドする必要がありません。

  4. 追加のコードを使用せずに、診断モニターを特定の構成で自動的に起動できます (追加のコードを使用すると、ロールの起動を妨げる例外が発生する可能性があります)。

既定の診断動作では、インフラストラクチャ ログとトレース ログを収集し、データをストレージに転送しません。既定のデータ以外のデータも収集する場合は、そのように診断モニターを構成する必要があります。

このトピックでは、XML 構成ファイル diagnostics.wadcfg の作成について説明します。アプリケーションでの診断データ ソースの構成、診断データのストレージへの保存、およびストレージに保存した診断データの表示の全体的な手順の詳細については、「Windows Azure での診断の有効化」を参照してください。

ロールの種類別の診断構成ファイルの場所は次のとおりです。

  • ワーカー ロールの場合、構成ファイルはロールのルート ディレクトリにあります。

  • Web ロールの場合、構成ファイルはロールのルート ディレクトリ内の bin ディレクトリにあります。

診断モジュールのインポート時にこれらの場所のいずれかに構成ファイルが存在する場合、診断モニターは既定の設定ではなく、その構成ファイルを使用して設定を構成します。

diagnostics.wadcfg 構成ファイルは、%ProgramFiles%\Microsoft SDKs\Windows Azure\<SDK>\<VersionNumber>\schemas\DiagnosticsConfig201010.xsd (<SDK> は使用している Developer SDK、<VersionNumber> はバージョン) にあるスキーマに準拠する XML ドキュメントです。この XML ファイルのスキーマの詳細については、「Azure Diagnostics 1.0 の構成スキーマ」を参照してください。

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」を参照してください。

表示: