次の方法で共有


Application Insights Profiler のトラブルシューティング

この記事では、Azure Application Insights Profiler を使用するためのトラブルシューティング手順と情報について説明します。

適切な Profiler エンドポイントを使用していることを確認します

現時点では、エンドポイントの変更を必要とするリージョンは Azure GovernmentAzure China のみです。

アプリ設定 米国政府機関向けクラウド China Cloud
ApplicationInsightsProfilerEndpoint https://profiler.monitor.azure.us https://profiler.monitor.azure.cn
ApplicationInsightsEndpoint https://dc.applicationinsights.us https://dc.applicationinsights.azure.cn

アプリが適切なバージョンで実行されていることを確認する

プロファイラーは、 バージョン 4.6.2 より後の .NET Framework でサポートされています。

Web アプリが ASP.NET Core アプリケーションの場合は、 サポートされている最新の ASP.NET Core ランタイムで実行されている必要があります。

適切な Azure サービス プランを使用していることを確認する

Profiler は現在、無料または共有のアプリ サービス プランではサポートされていません。 Profiler の作業を開始するための基本的なプランのいずれかにアップグレードします。

注:

Azure Functions の従量課金プランはサポートされていません。 詳細については、「 Application Insights を使用してライブ Azure Functions アプリをプロファイルする」を参照してください。

適切な期間内に Profiler データを検索してください

表示しようとしているデータが数週間以上経過している場合は、時間フィルターを制限してもう一度お試しください。 トレースは 7 日後に削除されます。

ゲートウェイにアクセスできることを確認する

プロキシまたはファイアウォールが への https://gateway.azureserviceprofiler.netアクセスをブロックしていないことを確認します。

プロファイラーが実行されているか、タイムアウトしていないことを確認する

プロファイル データは、Profiler の実行中に発生する要求にアタッチできる場合にのみアップロードされます。 Profiler は、1 時間ごとに 2 分間データを収集します。 プロファイル セッションを開始してプロファイラーをトリガーすることもできます。

プロファイラーは、トレース メッセージとカスタム イベントを Application Insights リソースに書き込みます。 これらのイベントを使用して、Profiler の実行方法を確認できます。

Profiler が Application Insights リソースに送信するトレース メッセージとカスタム イベントを検索するには、次の手順に従います。

  1. Application Insights リソースで、上部のメニュー バーから [ 検索 ] を選択します。

    Application Insights リソースから検索ボタンを選択しているスクリーンショット。

  2. 検索文字列 stopprofiler OR startprofiler OR upload OR ServiceProfilerSample を使用して、関連するデータを検索します。

    前述の検索文字列の検索結果のスクリーンショット。

    上記の検索結果には、2 つの AI リソースからの検索の 2 つの例が含まれています。

    • Profiler の実行中にアプリケーションが要求を受け取らない場合、アクティビティがないためアップロードが取り消されたことを示すメッセージが表示されます。

    • Profiler は、Profiler の実行中に発生する要求を検出すると、カスタム イベントを開始して送信します。 カスタム イベントが ServiceProfilerSample 表示される場合は、プロファイルがキャプチャされ、 Application Insights の [パフォーマンス ] ウィンドウで使用できることになります。

    レコードが表示されない場合、Profiler が実行されていないか、応答に時間がかかりすぎます。 Azure サービスで Profiler が有効になっていることを確認します。

並列スレッドでの二重カウント

2 つ以上の並列スレッドが要求に関連付けられている場合、スタック ビューアーの合計時間メトリックが要求の期間を超える場合があります。 その場合、合計スレッド時間は実際の経過時間を超えています。

たとえば、1 つのスレッドがもう一方のスレッドの完了を待機している可能性があります。 ビューアーはこの状況を検出しようとし、この待機を省略します。 この場合、潜在的に重要な情報を無視するのではなく、過剰な情報が表示される可能性があります。

トレースに並列スレッドが表示されたら、要求のホット パスを識別できるように、待機しているスレッドを決定します。 通常、待機状態にすばやく入るスレッドは、他のスレッドで待機するだけです。 他のスレッドに集中し、待機中のスレッドの時間を無視します。

特定の Azure サービスでの Profiler のトラブルシューティング

Azure App Services

Profiler が正常に動作するには、次のことを確認します。

  • Web アプリでは、適切な設定Application Insights が有効になっています

  • ApplicationInsightsProfiler3 Web ジョブが実行されています。 Web ジョブを確認するには、次の手順に従います。

    1. Kudu サービスにアクセスします

      Azure portal で、App Service に移動します。 左側のメニューから [ 詳細ツール ] を選択し、[ 移動] を選択します。

    2. 上部のメニューで、[ ツール>] [Web ジョブ ダッシュボード] の順に選択します[Web ジョブ] ウィンドウが開きます。

      ApplicationInsightsProfiler3 が表示されない場合は、App Service アプリケーションを再起動します。

      ジョブの名前、状態、最終実行時を表示する [Web ジョブ] ウィンドウのスクリーンショット。

    3. ログを含む Web ジョブの詳細を表示するには、[ ApplicationInsightsProfiler3 ] リンクを選択します。 [ 継続的な Web ジョブの詳細 ] ウィンドウが開きます。

      [継続的 Web ジョブの詳細] ウィンドウのスクリーンショット。

Profiler がまだ機能していない場合は、ログをダウンロードして Azure サポート チケットを送信できます。

Diagnostic Services サイト拡張機能の状態ページを確認する

ポータルの Application Insights ペイン で Profiler を有効にした場合は、Diagnostic Services サイト拡張機能によって管理されます。 この拡張機能の状態ページを確認するには、 に移動します https://<site-name>.scm.azurewebsites.net/DiagnosticServices

注:

状態ページのリンクのドメインは、クラウドによって異なります。 このドメインは、App Service の Kudu 管理サイトと同じになります。

状態ページには、Profiler エージェントと スナップショット デバッガー エージェントのインストール状態が表示されます。 予期しないエラーが発生した場合は、状態ページが表示され、エラーを修正する方法が表示されます。

App Service の Kudu 管理サイトを使用して、この状態ページのベース URL を取得できます。 これを行うには、次の手順を実行します。

  1. Azure portal から App Service アプリケーションを開きます。

  2. [Advanced Tools Go] を>選択します

  3. Kudu 管理サイトにアクセスしたら、URL に追加 /DiagnosticServices して Enter キーを押します。

    次のように終了します。 https://<kudu-url>/DiagnosticServices 次のような状態ページが表示されます。

    [診断サービスの状態] ページのスクリーンショット。

注:

Application Insights Profiler のコードレス インストールは、.NET Core サポート ポリシーに従います。 サポートされるランタイムの詳細については、「 .NET Core サポート ポリシー」を参照してください。

手動インストール

Profiler を構成すると、Web アプリの設定に更新プログラムが適用されます。 必要に応じて、 更新プログラムを手動で適用できます。

アクティブなプロファイリング セッションが多すぎます

Azure App Service では、一 度に 1 つのプロファイル セッションに制限があります。 この制限は、App Service プランで実行されているすべてのアプリケーションとデプロイ スロットにわたって VM レベルで適用されます。

この制限は、 問題の診断と解決 (Kudu、Application Insights Profiler) を使用して開始されたプロファイリング セッションにも同様に適用されます。

別のセッションが既に実行されているときに Profiler がセッションを開始しようとすると、アプリケーション ログと ApplicationInsightsProfiler3 の継続的な Web ジョブ ログにもエラーが記録されます。

ログには、次のいずれかのメッセージが表示される場合があります。

  • Microsoft.ServiceProfiler.Exceptions.TooManyETWSessionException
  • Error: StartProfiler failed. Details: System.Runtime.InteropServices.COMException (0xE111005E): Exception from HRESULT: 0xE111005E

エラー コード 0xE111005E は、別のセッションが既に実行されているため、プロファイリング セッションを開始できなかったことを示します。

このエラーを回避するには、一部の Web アプリを別の App Service プランに移動するか、一部のアプリケーションで Profiler を無効にします。 デプロイ スロットを使用する場合は、未使用のスロットを必ず停止してください。

デプロイ エラー: ディレクトリが空ではない 'D:\home\site\wwwroot\App_Data\jobs'

Profiler が有効になっている Web Apps リソースに Web アプリを再デプロイすると、次のメッセージが表示される場合があります。

ディレクトリが空ではない 'D:\home\site\wwwroot\App_Data\jobs'

このエラーは、スクリプトまたは Azure Pipelines から Web Deploy を実行した場合に発生します。 この問題を解決するには、Web 配置タスクに次のデプロイ パラメーターを追加します。

  • -skip:Directory='.*\\App_Data\\jobs\\continuous\\ApplicationInsightsProfiler.*'

  • -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs\\continuous$'

  • -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs$'

  • -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data$'

これらのパラメーターは、Application Insights Profiler で使用されるフォルダーを削除し、再デプロイ プロセスのブロックを解除します。 現在実行中の Profiler インスタンスには影響しません。

プロファイラーは実行されていますか?

Profiler は、Web アプリで継続的な Web ジョブとして実行されます。 Azure portal で Web アプリ リソースを開くことができます。 [ Web ジョブ ] ウィンドウで、ApplicationInsightsProfiler の状態を確認します。 実行されていない場合は、[ ログ] を 開いて詳細を取得します。

仮想マシンとクラウド サービス

Azure Diagnostics によって Profiler が正しく構成されているかどうかを確認するには、次の手順に従います。

  1. デプロイされた Azure Diagnostics 構成の内容が想定どおりであることを確認します。

  2. Azure Diagnostics が Profiler コマンド ラインで適切に iKey 渡されていることを確認します。

  3. Profiler ログ ファイルを確認して、Profiler が実行されたのにエラーが返されたかどうかを確認します。

Azure Diagnostics の構成に使用される設定を確認するには、次の手順に従います。

  1. 仮想マシンにサインインします。

  2. この場所でログ ファイルを開きます。 お使いのマシンでは、プラグインのバージョンが新しい場合があります。

    • VM の場合:

      C:\WindowsAzure\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log

    • Cloud Services の場合:

      C:\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log

  3. ファイルで、文字列 WadCfg を検索して、Azure Diagnostics を構成するために VM に渡される設定を見つけます。

  4. プロファイラーで使用されている が iKey 正しいかどうかを確認します。

  5. Profiler を起動するコマンド ラインを確認します。 コマンド ライン引数は次のファイルにあります (ドライブは または d:c:、ディレクトリは非表示になる可能性があります)。

    • VM の場合:

      C:\ProgramData\ApplicationInsightsProfiler\config.json

    • Cloud Services の場合:

      D:\ProgramData\ApplicationInsightsProfiler\config.json

  6. Profiler コマンド ラインの が iKey 正しいことを確認します。

  7. 前の config.json ファイルにあるパスを使用して、BootstrapN.logというプロファイラー ログ ファイル 確認します。 次の情報が表示されます。

    • Profiler が使用している設定を示すデバッグ情報。
    • Profiler からの状態とエラー メッセージ。

    ファイルは、次の方法で確認できます。

    • VM の場合:

      C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler

    • Cloud Services の場合:

      C:\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler

  8. アプリケーションが要求を受信しているときに Profiler が実行されている場合は、"iKey から検出されたアクティビティ" メッセージが表示されます。

  9. トレースがアップロードされると、"トレースのアップロードを開始します" というメッセージが表示されます。

ネットワーク プロキシまたはファイアウォール規則を編集する

アプリケーションがプロキシまたはファイアウォールを介してインターネットに接続する場合は、Profiler サービスと通信するためにルールを更新する必要がある場合があります。

Application Insights Profiler で使用される IP は、Azure Monitor サービス タグに含まれています。 詳細については、 サービス タグに関するドキュメントを参照してください

それ以外のすべてが失敗した場合

Azure portal でサポート チケットを送信します。 エラー メッセージの関連付け ID を含めます。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。