本番サービス上の診断設定を更新
直接サーバーエクスプローラから実行されているクラウドサービスの診断設定も、Visual Studioで構成および更新できるようになりました。診断の構成は、プロジェクトへのコード追加やクラウドサービスの再展開なく、いつでも更新できます(これにより本番の問題をよりすばやくデバッグできます)。
これを行うには、Server Explorer → Windows Azure Computeノードで、Windows Azureで実行されているロール・インスタンスを選択し、Update Diagnostics Settingsコマンドをクリックして、実行時の診断設定を構成します。
このコマンドを選択すると、ダイアログが表示され、ロールの診断設定を確認、編集できます。
アプリケーションログの収集設定、イベントログ、パフォーマンスカウンタ、インフラのログ(IISなどの)などを動的に変更できます。
この例では、パフォーマンスカウンタからロール上の利用可能なメモリ+CPU+リクエスト/秒についての情報が収集できます。
これは、Performance Countersタブを選択し、その中の適切なカウンタを選択して行います。
追跡したいパフォーマンスカウンタを選択する以外に、転送期間(分単位)やバッファーサイズ(MB)も設定する必要があります。今回は、1分と1024MBにします(これらを設定しないとログはStorageアカウントにコピーされません)。
OKをクリックすると、収集計画はすぐに本番のロール・インスタンスに適用され、指定した新しいデータの収集が開始されます。1分ほどで、Storageアカウントに作成された新しいWADPerformanceCountersTableが確認でき、パフォーマンスモニターデータの収集が開始されます。
上記のテーブルをダブルクリックすると、プラットフォームモニターデータを検索して確認できます。
実行時にこの機能を動的に切り替えられることは(クラウドサービスを再展開せず)非常に便利です。
すべての後続の展開に対して、長期的に収集計画を変更をしたい場合は、そのクラウドサービスプロジェクトに対して、実行時にロールデザイナで行ったその構成の変更を適用する(もしくはソース制御内にチェックインする)だけです。そうすると、新しいクラウドサービス展開でデフォルトでそれを取得します。
詳細
上記の診断サポートは非常に強力で、クラウドサービス内のロールやインスタンスの数に限定なく診断データをとらえるために使用できます(Webとワーカーロールのどちらも含まれています)。これにより、複数層の展開で問題をデバッグしたり分析したりすることがより簡単になります。
Windows Azureの診断エージェントへTraceステートメントを出力する.NET診断リスナーのサポートは、Visual Studio内で新しくクラウドサービスプロジェクトを作成する際に、デフォルトで有効になっています。
既存のASP.NET Webプロジェクトで開始して、後でクラウドサービスに変換する場合は、上記の診断サポートを有効にするために、web.configファイルに以下のTraceリスナー登録を手動で追加する必要があります。
<system.diagnostics> <trace> <listeners> <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics"> <filter type="" /> </add> </listeners> </trace> </system.diagnostics>