手記
この記事は、Azure Azure Cloud Services (延長サポート)に適用されます。 Cloud Services (クラシック) は、2024 年 8 月 31 日に廃止されます。 詳細については、2024 年 8 月 31 日 にクラウド サービス (クラシック) デプロイ モデルが廃止されるを参照してください。 新しい開発では、特定の目的のために設計された新しいサービスの種類 (Azure App Service、Azure Functions、Azure Container Apps など) を使用することをお勧めします。 利用可能なサービスの最新の一覧については、「Directory of Azure products」を参照してください。
Azure Cloud Services (延長サポート) サービスまたは仮想マシンのトラブルシューティングが必要な場合は、Visual Studio を使用して Azure Diagnostics をより簡単に設定できます。 診断では、クラウド サービスを実行する仮想マシンと仮想マシン インスタンスのシステム データとログ データがキャプチャされます。 診断データは、選択したストレージ アカウントに転送されます。 Azure での診断ログの詳細については、「Azure App Serviceで Web Apps の診断ログを有効にする」を参照してください。
この記事では、Visual Studio を使用して Azure Diagnostics を有効にして設定する方法について説明します。 Azure Virtual Machines で診断を設定する方法、収集する診断情報の種類を選択する方法、および収集後に情報を表示する方法について説明します。
次のいずれかのオプションを使用して、Azure Diagnostics を設定できます。
Visual Studio の [診断構成] ダイアログ ボックスで診断設定を変更します。 設定は、diagnostics.wadcfgxというファイルに保存されます。 構成ファイルを直接変更することもできます。 ファイルを手動で更新すると、次にクラウド サービスを Azure にデプロイするか、エミュレーターでサービスを実行するときに、構成の変更が有効になります。
Visual Studio 2019 以前の Cloud Explorer またはサーバー エクスプローラーを使用して、実行中のクラウド サービスまたは仮想マシンの診断設定を変更します。
Azure Diagnostics を設定するには、Visual Studio の [診断構成] ダイアログ ボックスで診断設定を変更します。 設定は、diagnostics.wadcfgxというファイルに保存されます。 構成ファイルを直接変更することもできます。 ファイルを手動で更新すると、次にクラウド サービスを Azure にデプロイするか、エミュレーターでサービスを実行するときに、構成の変更が有効になります。
警告
Visual Studio 2022 では、非推奨の Azure Storage Emulator は、クラウド サービス プロジェクトのデバッグ時に Azurite エミュレーターに置き換えられました。 この Azurite エミュレーターは、Azure Diagnostics プラグインでは動作しません。これにより、ローカルで実行およびテストするときに Azure Diagnostics がサポートされます。 ローカルの実行とテストのシナリオでプラグインが必要な場合は、ローカル サービス構成 (.cscfg
) の接続文字列を Azure Storage アカウントに更新するか (「ストレージ アカウントの接続文字列の管理 」を参照)、または前の Azure Storage エミュレーターをダウンロードします。
Visual Studio 17.10 リリースでは、ローカルの Azure Diagnostics プラグインは非推奨になり、そのリリースで有効にするオプションが既定で無効になっています。 Visual Studio 17.11 でプラグインが削除されました。 このプラグインはローカルの Azure コンピューティング エミュレーターでのみ使用され、Azure の Azure Diagnostics 拡張機能を使用するデプロイされた Cloud Services には影響しません。 Visual Studio 17.10 で診断プラグインを有効にするには、プロジェクト ファイル内の任意の PropertyGroup
に次のプロパティ設定を追加します:<EnableEmulatorDiagnosticsPlugin>True</EnableEmulatorDiagnosticsPlugin>
。
Visual Studio で診断ストレージ アカウントを決定する方法
- 診断接続文字列が
.cscfg
ファイルで指定されている場合、Visual Studio では、発行時およびパッケージ化中にパブリック構成 XML ファイルを生成するときに、診断拡張機能を設定するために使用されます。 .cscfg
ファイルで診断接続文字列が指定されていない場合、Visual Studio は、.wadcfgx
ファイルで指定されたストレージ アカウントを使用して、発行用およびパッケージ化中にパブリック構成 XML ファイルを生成するための診断拡張機能を設定することにフォールバックします。.cscfg
ファイル内の診断接続文字列は、.wadcfgx
ファイル内のストレージ アカウントよりも優先されます。.cscfg
ファイルに診断接続文字列が指定されている場合、Visual Studio はその接続文字列を使用し、.wadcfgx
のストレージ アカウントを無視します。
「開発ストレージ接続文字列を更新する」チェックボックスは何をしますか?
[Microsoft Azure への発行時に診断とキャッシュのための開発ストレージの接続文字列を Microsoft Azure ストレージ アカウントの資格情報で更新する] チェック ボックスは、開発ストレージ アカウントの接続文字列を、発行時に指定した Azure ストレージ アカウントに更新するのに役立ちます。 プロジェクトを Azure に発行すると、Visual Studio は、発行ウィザードで指定したストレージ アカウントで診断接続文字列を自動的に更新します。 ただし、実際のストレージ アカウントが診断接続文字列として指定されている場合は、そのアカウントが代わりに使用されます。
Azure Virtual Machines で診断を有効にする
Visual Studio では、Azure Virtual Machines の診断データを収集できます。
Azure Virtual Machines で診断を有効にするには
サーバー エクスプローラーで Azure ノードを選択し、まだ接続していない場合は Azure サブスクリプションに接続します。
Virtual Machines ノードを展開します。 新しい仮想マシンを作成することも、既存のノードを選択することもできます。
目的の仮想マシンのショートカット メニューで、[構成]を選択します。 [仮想マシンの構成] ダイアログ ボックスが表示されます。
を構成する
まだインストールされていない場合は、Log Analytics エージェント診断拡張機能を追加します。 この拡張機能を使用すると、Azure 仮想マシンの診断データを収集できます。 インストールされた拡張機能の下にある 使用可能な拡張機能を選択する ドロップダウン リスト ボックスから、Microsoft Monitoring Agent Diagnosticsを選択します。
をインストールする
手記
その他の診断拡張機能は、仮想マシンで使用できます。 詳細については、「Windowsの仮想マシン拡張機能と機能」を参照してください。
拡張機能を追加し、その 診断構成 ダイアログ ボックスを表示するには、[追加]をクリックします。
ストレージ アカウントを指定するには、[構成]を選択し、[OK]を選択します。
各タブ (全般 と ログ ディレクトリのを除く) は、収集できる診断データ ソースを表します。
Azure Diagnostics と構成
既定のタブ [全般]には、診断データ収集オプションが用意されています。エラーのみ、すべての情報、およびカスタム プラン 。 既定のオプションである エラーのみは、警告やトレース メッセージを転送しないため、ストレージの使用量を最も少なく抑えることができます。 すべての情報 オプションは、最も多くの情報を転送するため、ストレージの観点から最もコストの高いオプションです。
この例では、収集したデータをカスタマイズできるように、カスタム プラン オプションを選択します。
[ディスク クォータ (MB)] ボックスでは、診断データ用として、ストレージ アカウントに割り当てたい領域の容量を指定します。 必要に応じて、既定値を変更できます。
収集する診断データに対応する各タブで、[<ログの種類> の転送を有効にする] チェック ボックスをオンにします。
たとえば、アプリケーション ログを収集する場合は、[アプリケーション ログ] タブの [アプリケーション ログ の転送を有効にする] チェック ボックス オンにします。また、各診断データ型に必要なその他の情報を指定します。 各タブの構成情報については、この記事で後述 診断データ ソースの設定 セクションを参照してください。
必要なすべての診断データの収集を有効にしたら、[OK] 選択します。
更新したプロジェクトを保存します。
Microsoft Azure アクティビティ ログ ウィンドウに、仮想マシンが更新されたことを示すメッセージが表示されます。
診断データ ソースを設定する
診断データ収集を有効にした後、収集するデータ ソースと収集する情報を正確に選択できます。 次のセクションでは、[診断構成] ダイアログ ボックスのタブと、各構成オプションの意味について説明します。
アプリケーション ログ
アプリケーション ログには、Web アプリケーションによって生成される診断情報があります。 アプリケーション ログをキャプチャする場合は、[アプリケーション ログの転送を有効にする] チェック ボックスをオンにします。 ストレージ アカウントへのアプリケーション ログの転送間隔を増減するには、転送期間 (最小) 値を変更します。 ログに取り込む情報の量も、[ログ レベル] の値を設定することによって変更できます。 たとえば、取り込む情報の量を増やすには [詳細] を、重要なエラーのみ取り込むには [重大] を選択します。 アプリケーション ログを出力する特定の診断プロバイダーがある場合は、プロバイダー GUID ボックスにプロバイダーのグローバル一意識別子 (GUID) を追加してログをキャプチャできます。
アプリケーション ログの詳細については、「Azure App Serviceで Web Apps の診断ログを有効にする」を参照してください。
Windows イベント ログ
Windows イベント ログをキャプチャするには、[Windows イベント ログの転送を有効にする] チェック ボックスをオンにします。 ストレージ アカウントへのイベント ログの転送間隔を増減するには、転送期間 (最小) 値を変更します。 追跡するイベントの種類のチェック ボックスをオンにします。
カスタム データ ソースを指定する場合は、[<データ ソース名> テキスト ボックスに入力し、[の追加]選択します。 データ ソースが diagnostics.cfcfg ファイルに追加されます。
パフォーマンス カウンター
パフォーマンス カウンター情報は、システムのボトルネックを特定し、システムとアプリケーションのパフォーマンスを微調整するのに役立ちます。 詳細については、「Azure アプリケーションでのパフォーマンス カウンターの作成と使用」を参照してください。 パフォーマンス カウンターをキャプチャするには、[パフォーマンス カウンターの転送を有効にする] チェック ボックスをオンにします。 ストレージ アカウントへのイベント ログの転送間隔を増減するには、転送期間 (最小) 値を変更します。 追跡するパフォーマンス カウンターのチェック ボックスをオンにします。
一覧にないパフォーマンス カウンターを追跡するには、推奨される構文を使用してパフォーマンス カウンターを入力します。 [追加] を選択します。 追跡できるパフォーマンス カウンターは、仮想マシン上のオペレーティング システムによって決まります。構文の詳細については、「カウンター パスを指定する」を参照してください。
インフラストラクチャ ログ
インフラストラクチャ ログには、Azure 診断インフラストラクチャ、RemoteAccess モジュール、および RemoteForwarder モジュールに関する情報があります。 インフラストラクチャ ログに関する情報を収集するには、[インフラストラクチャ ログの転送を有効にする] チェック ボックスをオンにします。 ストレージ アカウントへのインフラストラクチャ ログの転送間隔を増減するには、転送期間 (最小) 値を変更します。
詳細については、「Azure Diagnosticsを使用したログ データの収集」を参照してください。
ログ ディレクトリ
ログ ディレクトリには、インターネット インフォメーション サービス (IIS) 要求、失敗した要求、または選択したフォルダーのログ ディレクトリから収集されたデータがあります。 ログ ディレクトリをキャプチャするには、[ログ ディレクトリの転送を有効にする] チェック ボックスをオンにします。 ストレージ アカウントへのログの転送間隔を増減するには、転送期間 (分) 値を変更します。
収集したいログのチェックボックスを選択します。例えば、IIS ログ や 失敗した要求ログ など。 既定のストレージ コンテナー名が指定されていますが、名前は変更できます。
任意のフォルダーからログをキャプチャできます。 [絶対ディレクトリ] セクションの [ ログ] でパスを指定し、[ディレクトリ 追加] を選択します。 ログは、指定されたコンテナーにキャプチャされます。
ETW ログ
Event Tracing for Windows (ETW) (ETW) を使用して ETW ログをキャプチャする場合は、ETW ログの転送を有効にする チェック ボックスをオンにします。 ストレージ アカウントへのログの転送間隔を増減するには、転送期間 (分) 値を変更します。
イベントは、指定したイベント ソースとイベント マニフェストからキャプチャされます。 イベント ソースを指定するには、[イベント ソース] セクションで名前を入力し、[イベント ソースの追加] 選択します。 同様に、[イベント マニフェスト] セクションでイベント マニフェストを指定し、[イベント マニフェストの追加] 選択できます。
ETW フレームワークは、System.Diagnostics.aspx 名前空間のクラスを介して ASP.NET でサポートされています。 標準の System.Diagnostics.aspx クラスを継承して拡張する Microsoft.WindowsAzure.Diagnostics 名前空間を使用すると、Azure 環境でログ記録フレームワークとして System.Diagnostics.aspx を使用できます。 詳細については、「Microsoft Azure でのログ記録とトレースの制御と、Azure Cloud Services (延長サポート) と仮想マシンの で診断を有効にするに関するページを参照してください。
クラッシュ ダンプ
ロール インスタンスがクラッシュしたタイミングに関する情報をキャプチャするには、[クラッシュ ダンプの転送を有効にする] チェック ボックスをオンにします。 (ASP.NET はほとんどの例外を処理するため、これは一般的に worker ロールにのみ役立ちます)。クラッシュ ダンプに割り当てられた記憶域領域の割合を増減するには、ディレクトリ クォータ (%) 値を変更します。 クラッシュ ダンプが格納されるストレージ コンテナーを変更し、完全なダンプ をキャプチャするか、ミニダンプ をキャプチャするかを選択できます。
現在追跡されているプロセスは、次のスクリーンショットに一覧表示されます。 キャプチャするプロセスのチェック ボックスをオンにします。 別のプロセスを一覧に追加するには、プロセス名を入力し、[プロセス の追加]選択します。
詳細については、「Microsoft Azureでのログ記録とトレースの制御を行う」を参照してください。
診断データを表示する
クラウド サービスまたは仮想マシンの診断データを収集したら、それを表示できます。
クラウド サービス診断データを表示するには
通常どおりクラウド サービスをデプロイし、実行します。
診断データは、Visual Studio によって生成されるレポートまたはストレージ アカウントのテーブルで表示できます。 レポートでデータを表示するには、Cloud Explorer またはサーバー エクスプローラーを開き、目的のロールのノードのショートカット メニューを開き、[診断データの表示] 選択します。
を表示する
使用可能なデータを示すレポートが表示されます。
Microsoft Azure Diagnostics レポート
で作成する
最新のデータが表示されない場合は、転送期間が経過するまで待つ必要があります。
データをすぐに更新するには、[更新] リンクを選択します。 データを自動的に更新するには、自動更新 ドロップダウン リスト ボックスで間隔を選択します。 エラー データをエクスポートするには、[CSV にエクスポート] ボタンを選択して、Excel ワークシートで開くことができるコンマ区切りの値ファイルを作成します。
Cloud Explorer またはサーバー エクスプローラーで、デプロイに関連付けられているストレージ アカウントを開きます。
テーブル ビューアーで診断テーブルを開き、収集したデータを確認します。 IIS ログとカスタム ログの場合は、BLOB コンテナーを開くことができます。 次の表に、さまざまなログ ファイルのデータを含むテーブルまたは BLOB コンテナーを示します。 テーブル エントリには、そのログ ファイルのデータに加えて、EventTickCount 、DeploymentId、Role、および RoleInstance が含まれており、データを生成した仮想マシンとロールを特定するのに役立ちます。
診断データ 説明 場所 アプリケーション ログ System.Diagnostics.Trace クラスのメソッドを呼び出すことによってコードによって生成されるログ。 WADLogsTable イベント ログ 仮想マシン上の Windows イベント ログからのデータ。 Windows はこれらのログに情報を格納しますが、アプリケーションやサービスはログを使用してエラーやログ情報を報告します。 WADWindowsEventLogsTable パフォーマンス カウンター 仮想マシンで使用できる任意のパフォーマンス カウンターでデータを収集できます。 オペレーティング システムには、メモリ使用量やプロセッサ時間などの多くの統計情報を含むパフォーマンス カウンターが用意されています。 WADパフォーマンスカウンターテーブル (WADPerformanceCountersTable) インフラストラクチャ ログ 診断インフラストラクチャ自体から生成されるログ。 WADDiagnosticInfrastructureLogsTable IIS ログ Web 要求を記録するログ。 クラウド サービスが大量のトラフィックを受け取った場合、これらのログは長くなる可能性があります。 必要な場合にのみ、このデータを収集して格納することをお勧めします。 失敗した要求のログは、blob コンテナーの wad-IIS-failedreqlogs 配下にあり、そのデプロイメント、ロール、およびインスタンスに対応するパスを辿れば見つけることができます。 wad-IIS-logfiles の下に完全なログがあります。 各ファイルのエントリは WADDirectories テーブルで作成されます。 クラッシュ ダンプ クラウド サービスのプロセス (通常は worker ロール) のバイナリ イメージを提供します。 wad-crush-dumps BLOB コンテナー カスタム ログ ファイル 定義済みのデータのログ。 ストレージ アカウント内のカスタム ログ ファイルの場所をコードで指定できます。 たとえば、カスタム BLOB コンテナーを指定できます。 任意の種類のデータが切り捨てられている場合は、そのデータ型のバッファーを増やすか、仮想マシンからストレージ アカウントへのデータ転送の間隔を短くしてみてください。
(省略可能)ストレージ アカウントからデータを消去して、ストレージ の全体的なコストを削減する場合があります。
完全デプロイを実行すると、diagnostics.cscfg ファイルが Azure で更新され、クラウド サービスによって診断構成に対する変更が取得されます。 代わりに既存のデプロイを更新した場合、.cscfg ファイルは Azure では更新されません。 ただし、次のセクションの手順に従って、診断設定を変更することもできます。 完全なデプロイの実行と既存のデプロイの更新の詳細については、「Azure アプリケーションの発行ウィザード」を参照してください。
仮想マシンの診断データを表示するには
仮想マシンのショートカット メニューで、[診断データの表示] 選択します。
[診断の概要] ダイアログ ボックスが表示されます。
最新のデータが表示されない場合は、転送期間が経過するまで待つ必要があります。
データをすぐに更新するには、[更新] リンクを選択します。 データを自動的に更新するには、自動更新 ドロップダウン リスト ボックスで間隔を選択します。 エラー データをエクスポートするには、[CSV にエクスポート] ボタンを選択して、Excel ワークシートで開くことができるコンマ区切りの値ファイルを作成します。
デプロイ後にクラウド サービス診断を設定する
既に実行されているクラウド サービスの問題を調査している場合は、最初にロールをデプロイする前に指定しなかったデータを収集することをお勧めします。 この場合、サーバー エクスプローラーで設定を変更することで、そのデータの収集を開始できます。 診断は、インスタンスのショートカット メニューから 診断構成 ダイアログ ボックスを開くか、ロールに対して開くかに応じて、1 つのインスタンスまたはロール内のすべてのインスタンスに対して設定できます。 ロール ノードを構成した場合、行った変更は、すべてのインスタンスに適用されます。 インスタンス ノードを構成した場合、行った変更は、そのインスタンスにのみ適用されます。
実行中のクラウド サービスの診断を設定するには
サーバー エクスプローラーで、Cloud Services ノードを展開し、ノードの一覧を展開して、調査するロールまたはインスタンス (またはその両方) を見つけます。
インスタンス ノードまたはロール ノードのショートカット メニューで、[診断設定の更新] 選択し、収集する診断設定を選択します。
構成設定の詳細については、この記事 診断データ ソースの設定に関するセクションを参照してください。 診断データを表示する方法については、この記事の「診断データ を表示する」セクションを参照してください。
サーバー エクスプローラーでデータ収集を変更した場合、変更はクラウド サービスを完全に再デプロイするまで有効なままです。 既定の発行設定を使用する場合、変更は上書きされません。 既定の発行設定では、完全な再デプロイを実行するのではなく、既存のデプロイを更新します。 展開時に設定が確実にクリアされるようにするには、発行ウィザードの [詳細設定] タブに移動し、[展開更新プログラム チェック ボックスをオフにします。 このチェック ボックスをオフにして再デプロイすると、ロールの プロパティ エディターで設定された
.wadcfgx
ファイル内の設定に戻ります。 デプロイを更新すると、Azure は以前の設定を保持します。
Azure Cloud Services (延長サポート) に関する問題のトラブルシューティング
クラウド サービス プロジェクトで、例えば「ビジー」状態でロールがスタックしたり、繰り返しリサイクルしたり、内部サーバーエラーが発生したりする問題が生じた場合、問題を診断し修正するために使用できるツールと手法があります。 一般的な問題と解決策の具体的な例、およびこれらのエラーの診断と修正に使用できる概念とツールの概要については、Azure サービスとしてのプラットフォーム (PaaS) コンピューティング診断データを参照してください。
Q & A
バッファー サイズとは何ですか。また、どの程度のサイズにする必要がありますか?
各仮想マシン インスタンスでは、クォータによって、ローカル ファイル システムに格納できる診断データの量が制限されます。 さらに、使用可能な診断データの種類ごとにバッファー サイズを指定します。 このバッファー サイズは、その種類のデータに対する個々のクォータと同様に機能します。 全体的なクォータと残っているメモリの量を確認するには、診断データ型のダイアログ ボックスの下部を参照してください。 より大きなバッファーやより多くの種類のデータを指定すると、全体のクォータに近づきます。 diagnostics.wadcfgx 構成ファイルを変更することで、クォータ全体を変更できます。 診断データは、アプリケーションのデータと同じファイル システムに格納されます。 アプリケーションで大量のディスク領域を使用する場合は、全体的な診断クォータを増やさないでください。
転送期間は何であり、どのくらいの期間が必要ですか?
転送期間は、データ キャプチャ間の経過時間です。 転送期間が経過するたびに、データは仮想マシン上のローカル ファイル システムからストレージ アカウント内のテーブルに移動されます。 収集されたデータの量が転送期間の終了前にクォータを超えた場合、古いデータは破棄されます。 データがバッファー サイズまたは全体的なクォータを超えたためにデータを失う場合は、転送期間を短縮できます。
タイムスタンプは何のタイム ゾーンに含まれていますか?
タイム スタンプは、クラウド サービスをホストするデータセンターのローカル タイム ゾーンにあります。 ログ テーブルには、次の 3 つのタイム スタンプ列が使用されます。
- PreciseTimeStamp: イベントの ETW タイムスタンプ。 つまり、イベントがクライアントからログに記録される時刻です。
- TIMESTAMP: アップロード頻度境界に切り捨てられた PreciseTimeStamp の値。 たとえば、アップロード頻度が 5 分で、イベント時間が 00:17:12 の場合、TIMESTAMP は 00:15:00 になります。
- タイムスタンプ: Azure テーブルにエンティティが作成されたタイムスタンプ。
診断情報を収集するときにコストを管理する方法
既定の設定 (ログ レベルエラーに設定され、転送期間 1 分 に設定) は、コストを最小限に抑えるように設計されています。 より多くの診断データを収集する場合、または転送期間を短縮すると、コンピューティング コストが増加します。 必要以上に多くのデータを収集しないでください。また、不要になったらデータ収集を無効にすることを忘れないでください。 この記事で前述したように、実行時でも、いつでも再度有効にすることができます。
IIS から失敗した要求ログを収集するにはどうすればよいですか?
既定では、IIS は失敗した要求ログを収集しません。 Web ロールの web.config ファイルを編集することで、失敗した要求ログを収集するように IIS を設定できます。
OnStart などの RoleEntryPoint メソッドからトレース情報を取得していません。 何が問題なのですか。
RoleEntryPoint のメソッドは、IIS ではなく、WAIISHost.exeのコンテキストで呼び出されます。 通常トレースを有効にする web.config の構成情報は適用されません。 この問題を解決するには、web ロール プロジェクトに .config ファイルを追加し、RoleEntryPoint コードを含む出力アセンブリに一致するようにファイルに名前を付けます。 既定の Web ロール プロジェクトでは、.config ファイルの名前を WAIISHost.exe.configする必要があります。このファイルに次の行を追加します。
<system.diagnostics>
<trace>
<listeners>
<add name "AzureDiagnostics" type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener">
<filter type="" />
</add>
</listeners>
</trace>
</system.diagnostics>
[プロパティ] ウィンドウで、[出力ディレクトリにコピー] プロパティを [常にコピー] に設定します。
関連コンテンツ
Azure での診断ログの詳細については、「Azure Cloud Services (延長サポート) と仮想マシンの で診断を有効にする」と「Azure App Serviceで Web Apps の診断ログを有効にする」を参照してください。