Live Metrics: 1 秒の待機時間での監視と診断

Application Insights の Live Metrics (QuickPulse とも呼ばれています) を使用して、実稼働中の Web アプリケーションを監視します。 メトリックやパフォーマンス カウンターを選択してフィルター処理し、サービスに支障をきたすことなく、リアルタイムで監視できます。 失敗した要求と例外のサンプルからスタック トレースを確認することもできます。 Live Metrics をプロファイラースナップショット デバッガーと併用することにより、実稼働中の Web サイト向けの強力で非侵襲的な診断ツールを利用できます。

Note

Live Metrics では、TLS 1.2 のみがサポートされます。 詳細については、トラブルシューティングのヒントに関するページをご覧ください。

Live Metrics を使用すると、次のことが可能になります。

  • 修正がリリースされている間に、パフォーマンスと失敗の数を確認して、修正を検証します。
  • テスト負荷の影響を監視し、問題をライブで診断します。
  • 監視するメトリックを選択してフィルタリングすることにより、特定のテスト セッションに焦点を当てたり、既知の問題を除外したりできます。
  • 発生時に例外トレースを取得します。
  • フィルターを試して、最も関連性の高い KPI を検索します。
  • すべての Windows パフォーマンス カウンターをライブで監視します。
  • 問題が発生しているサーバーを簡単に特定し、すべての KPI/ライブ フィードをフィルター処理してそのサーバーだけに絞り込むことができます。

Screenshot that shows the Live Metrics tab.

現在、Live Metrics は ASP.NET、ASP.NET Core、Azure Functions、Java、Node.js のアプリでサポートされています。

Note

Live Metrics によって表示される監視対象のサーバー インスタンス数は、アプリケーションに割り当てられている実際のインスタンス数よりも少ない場合があります。 多くの最新の Web サーバーが、リソースを節約するために、一定の時間にわたって要求を受信しないアプリケーションをアンロードするため、この不整合が発生します。 Live Metrics を使用すると、アプリケーションを現在実行しているサーバーのみがカウントされるため、プロセスを既にアンロードしているサーバーはその合計には含まれません。

はじめに

重要

Application Insights を有効にするには、Azure portal でアクティブにし、アプリで最新バージョンの Application Insights NuGet パッケージを使用します。 NuGet パッケージを使用しない場合、一部のテレメトリが Application Insights に送信されますが、そのテレメトリは Live Metrics には表示されません。

  1. 言語固有のガイドラインに従い、Live Metrics を有効にします。

  2. Azure Portal で、お使いのアプリの Application Insights リソースを開きます。 その後、Live Stream を開きます。

  3. フィルターに顧客名などの機密データを使用する場合は、コントロール チャネルを保護します。

注意

インストルメンテーション キーのインジェストのサポートは、2025 年 3 月 31 日に終了します。 インストルメンテーション キーのインジェストは引き続き機能しますが、この機能の更新プログラムやサポートは提供されなくなります。 接続文字列に移行することで、新機能をご利用いただけます。

あらゆる .NET アプリケーションに対してコードを使用して Live Metrics を有効にする

注意

.NET アプリケーションに推奨される手順を使用してオンボードした場合、Live Metrics は既定で有効になっています。

Live Metrics を手動で構成するには:

  1. NuGet パッケージ Microsoft.ApplicationInsights.PerfCounterCollector をインストールします。
  2. 次のサンプル コンソール アプリ コードは、LiveMetrics の設定方法を示しています。
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

// Create a TelemetryConfiguration instance.
TelemetryConfiguration config = TelemetryConfiguration.CreateDefault();
config.InstrumentationKey = "INSTRUMENTATION-KEY-HERE";
QuickPulseTelemetryProcessor quickPulseProcessor = null;
config.DefaultTelemetrySink.TelemetryProcessorChainBuilder
    .Use((next) =>
    {
        quickPulseProcessor = new QuickPulseTelemetryProcessor(next);
        return quickPulseProcessor;
    })
    .Build();

var quickPulseModule = new QuickPulseTelemetryModule();

// Secure the control channel.
// This is optional, but recommended.
quickPulseModule.AuthenticationApiKey = "YOUR-API-KEY-HERE";
quickPulseModule.Initialize(config);
quickPulseModule.RegisterTelemetryProcessor(quickPulseProcessor);

// Create a TelemetryClient instance. It is important
// to use the same TelemetryConfiguration here as the one
// used to set up Live Metrics.
TelemetryClient client = new TelemetryClient(config);

// This sample runs indefinitely. Replace with actual application logic.
while (true)
{
    // Send dependency and request telemetry.
    // These will be shown in Live Metrics.
    // CPU/Memory Performance counter is also shown
    // automatically without any additional steps.
    client.TrackDependency("My dependency", "target", "http://sample",
        DateTimeOffset.Now, TimeSpan.FromMilliseconds(300), true);
    client.TrackRequest("My Request", DateTimeOffset.Now,
        TimeSpan.FromMilliseconds(230), "200", true);
    Task.Delay(1000).Wait();
}

上記のサンプルはコンソール アプリ用ですが、あらゆる .NET アプリケーションで同じコードを使用できます。 テレメトリを自動収集するその他のテレメトリ モジュールが有効になっている場合、それらのモジュールの初期化に使用されたものと同じ構成を LiveMetrics モジュールでも使用することが重要です。

Live Metrics がメトリックス エクスプローラーや Log Analytics と異なる点

機能 Live Stream メトリックス エクスプローラーと Log Analytics
Latency 1 秒以内に表示されるデータ。 数分間で集計。
リテンション期間なし データは、グラフに表示されている間は保持され、その後破棄されます。 データは 90 日間保持。
オン デマンド データは、[Live Metircs] ペインが開いている間のみストリーミングされます。 SDK がインストールされて有効になるたびに、データが送信されます。
Free Live Stream データの料金は発生しません。 価格設定の対象。
サンプリング 選択したすべてのメトリックとカウンターが送信されます。 失敗やスタック トレースがサンプリングされます。 イベントはサンプリングできます。
コントロール チャネル フィルターの制御シグナルが SDK に送信されます。 このチャネルをセキュリティで保護することをお勧めします。 通信はポータルへの一方向です。

メトリックの選択とフィルタリング

これらの機能は、ASP.NET、ASP.NET Core、Azure Functions (v2) で使用できます。

ポータルで Application Insights Telemetry に任意のフィルターを適用して、カスタム ライブ KPI を監視できます。 グラフをマウスでポイントしたときに表示されるフィルター コントロールを選択します。 次のグラフでは、URL期間の各属性にフィルターを適用して、カスタム要求数 KPI をプロットしています。 [ストリームのプレビュー] セクションでフィルターを検証します。このセクションには、指定した条件といずれかの時点で一致するテレメトリのライブ フィードが表示されます。

Screenshot that shows the Filter request rate.

Count 以外の値を監視できます。 オプションはストリームの種類によって異なります。ストリームの種類には、任意の Application Insights テレメトリ (要求、依存関係、例外、トレース、イベント、メトリックなど) を指定できます。 また、独自のカスタム測定を指定することもできます。

Screenshot that shows the Query Builder on Request Rate with a custom metric.

Application Insights テレメトリと共に、任意の Windows パフォーマンス カウンターを監視することもできます。 ストリーム オプションから選択し、パフォーマンス カウンターの名前を指定します。

Live Metrics は 2 つのポイントで集計されます。具体的には、サーバーごとにローカルで集計された後、すべてのサーバーにわたって集計されます。 どちらについても、それぞれのドロップダウン リストで他のオプションを選択することで既定値を変更できます。

サンプル テレメトリ: カスタム ライブ診断イベント

既定では、イベントのライブ フィードには失敗した要求と依存関係呼び出し、例外、イベント、トレースのサンプルが表示されます。 フィルター アイコンを選択すると、任意の時点で適用された条件が表示されます。

Screenshot that shows the Filter button.

メトリックと同様に、Application Insights Telemetry の種類のいずれかに任意の条件を指定できます。 この例では、特定の要求エラーとイベントを選択しています。

Screenshot that shows the Query Builder.

Note

現時点では、例外メッセージ ベースの条件には、最も外側の例外メッセージを使用します。 前の例では、[The client disconnected](クライアントが切断されました) という内部例外メッセージ ("<--" 区切り記号の後) が示されている害のない例外を除外するために、[Error reading request content](要求内容の読み取りエラー) が含まれていないメッセージという条件を使用します。

ライブ フィードの項目を選択して、詳細を表示します。 フィードを一時停止するには、[一時停止] を選択するか、下にスクロールして項目を選択します。 スクロールして上部に戻るか、一時停止されている間に収集された項目のカウンターを選択すると、ライブ フィードが再開されます。

Screenshot that shows the Sample telemetry window with an exception selected and the exception details displayed at the bottom of the window.

サーバー インスタンスによるフィルター処理

特定のサーバー ロール インスタンスを監視する場合は、サーバーでフィルター処理できます。 フィルターを適用するには、[サーバー] でサーバー名を選択します。

Screenshot that shows the Sampled live failures.

コントロール チャネルの保護

Live Metrics のカスタム フィルターを使用すると、アプリケーションのテレメトリのうち、Azure portal 内の Live Metrics ビューにストリーミングされるテレメトリを制御できます。 フィルター条件は、Application Insights SDK でインストルメント化されたアプリに送信されます。 フィルター値に顧客 ID などの機密情報が含まれている可能性があります。 この値をセキュリティで保護し、承認されていないアプリケーションに漏えいする可能性を防ぐには、次の 2 つのオプションがあります。

  • 推奨:Microsoft Entra 認証を使用して、Live Metrics チャネルをセキュリティで保護します。
  • レガシ (推奨されなくなりました): [Legacy option](レガシ オプション) セクションで説明するようにシークレット API キーを構成して、認証されたチャネルを設定します。

注意

2025 年 9 月 30 日に、Live Metrics テレメトリを Application Insights にストリーミングするために使用される API キーが廃止されます。 その日を過ぎると、API キーを使用するアプリケーションは、Live Metrics データを Application Insights リソースに送信できなくなります。 Application Insights にストリーミングする Live Metrics の認証済みテレメトリ インジェストは、Application Insights に対する Microsoft Entra 認証を使用して実行する必要があります。

認証されたチャネルを設定せずにカスタム フィルターを試すことができます。 フィルター アイコンのいずれかを選択して、接続されたサーバーを承認します。 このオプションを選択する場合は、新しいセッションごとに、または新しいサーバーがオンラインになるたびに、接続されているサーバーを承認する必要があります。

警告

セキュリティで保護されていないチャネルを使用しないことを強くお勧めしす。このオプションは、使用を開始してから 6 か月後に無効になります。 [Authorize connected servers] (接続されたサーバーの承認) ダイアログに、このオプションが無効になる日付が表示されます。

Screenshot that shows the Authorize connected servers dialog.

レガシ オプション: API キーを作成する

  1. [API アクセス] タブを選択し、[API キーの作成] を選択します。

    Screenshot that shows selecting the API Access tab and the Create API key button.

  2. [SDK コントロール チャネルの認証] チェックボックスをオンにし、[キーの生成] を選択します。

    Screenshot that shows the Create API key pane. Select Authenticate SDK control channel checkbox and then select Generate key.

API キーを構成に追加する

ASP.NET、ASP.NET Core、WorkerService、Azure Functions アプリの構成に API キーを追加できます。

Program.cs ファイルに、次の名前空間を追加します。

using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

次に、次のサービス登録を追加します。

// Existing code which includes services.AddApplicationInsightsTelemetry() to enable Application Insights.
builder.Services.ConfigureTelemetryModule<QuickPulseTelemetryModule> ((module, o) => module.AuthenticationApiKey = "YOUR-API-KEY-HERE");

ASP.NET Core アプリケーションを構成する方法については、ASP.NET Core でのテレメトリ モジュールの構成に関する記事を参照してください。

WorkerService

WorkerService アプリケーションについては、こちらの指示に従ってください。

次の名前空間を追加します。

using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

次に、services.AddApplicationInsightsTelemetryWorkerService を呼び出す前に次の行を追加します。

    services.ConfigureTelemetryModule<QuickPulseTelemetryModule> ((module, o) => module.AuthenticationApiKey = "YOUR-API-KEY-HERE");

WorkerService アプリケーションを構成する方法については、WorkerServices でのテレメトリ モジュールの構成に関する記事を参照してください。

Azure Functions アプリ

Azure Functions アプリ (v2) の場合は、環境変数を使用して API キーでチャネルをセキュリティで保護できます。

Application Insights リソース内から API キーを作成し、Azure Function アプリの [設定]>[構成] の順に移動します。 [新しいアプリケーション設定] を選択し、APPINSIGHTS_QUICKPULSEAUTHAPIKEY の名前と、API キーに対応する値を入力します。

サポートされる機能の表

Language 基本メトリック パフォーマンス メトリック カスタム フィルター処理 サンプル テレメトリ プロセス別の CPU 分割
.NET Framework サポート対象 (LTS) サポート対象 (LTS) サポート対象 (LTS) サポート対象 (LTS) サポート対象 (LTS)
.NET Core (ターゲット =.NET Framework) サポート対象 (LTS) サポート対象 (LTS) サポート対象 (LTS) サポート対象 (LTS) サポート対象 (LTS)
.NET Core (ターゲット =.NET Core) サポート対象 (LTS) サポート対象* サポート対象 (LTS) サポート対象 (LTS) サポートされていません
Azure Functions v2 サポートされています サポートされています サポートされています サポート対象 サポートされていません
Java サポート対象 (V2.0.0 以降) サポート対象 (V2.0.0 以降) サポートされていません サポート対象 (V3.2.0 以降) サポートされていません
Node.js サポート対象 (V1.3.0 以降) サポート対象 (V1.3.0 以降) サポートされていません サポート対象 (V1.3.0 以降) サポートされていません
Python サポートされていません サポートされていません サポートされていません サポートされていません サポートされていません

基本メトリックには、要求、依存関係、例外率が含まれます。 パフォーマンス メトリック (パフォーマンス カウンター) には、メモリと CPU が含まれます。 テレメトリのサンプルには、失敗した要求と依存関係、例外、イベント、トレースに関する詳細情報のストリームが表示されます。

PerfCounters のサポートは、.NET Framework を対象としない .NET Core のバージョンによって多少異なります。

  • PerfCounters メトリックは、Azure App Service for Windows (ASP.NET Core SDK バージョン 2.4.1 以降) で実行する場合にサポートされます。
  • PerfCounters は、.NET Core LTS 以降を対象とするアプリ用の任意の Windows マシンでアプリが実行されている場合にサポートされます。
  • PerfCounters は、最新バージョンでは、アプリの "実行場所" (Linux、Windows、Linux のアプリ サービス、コンテナーなど) を問わずサポートされますが、.NET Core LTS 以降を対象とするアプリに限られます。

トラブルシューティング

Live Metrics では、他の Application Insights テレメトリとは異なる IP アドレスを使用します。 これらの IP アドレスがファイアウォールで開いていることを確認してください。 また、サーバーのファイアウォールで、Live Metrics の発信ポートが開いていることを確認します。

Microsoft Azure での TLS 1.2 の移行に関するアナウンス」で説明されているように、Live Metrics では TLS 1.2 のみがサポートされるようになりました。 以前のバージョンの TLS を使用している場合、Live Metrics にデータは表示されません。 .NET Framework 4.5.1 に基づくアプリケーションの場合は、クライアントでのトランスポート層セキュリティ (TLS) 1.2 の有効化 - Configuration Manager に関する説明を参照し、新しい TLS バージョンをサポートするようにしてください。

.NET の構成が見つかりません

  1. NuGet パッケージMicrosoft.ApplicationInsights.PerfCounterCollector の最新バージョンを使用していることを確認します。

  2. ApplicationInsights.config ファイルを編集します。

    • 接続文字列が、使用している Application Insights リソースを指していることを確認します。
    • QuickPulseTelemetryModule 構成オプションを見つけます。 ない場合は、追加します。
    • QuickPulseTelemetryProcessor 構成オプションを見つけます。 ない場合は、追加します。
    <TelemetryModules>
    <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.
    QuickPulse.QuickPulseTelemetryModule, Microsoft.AI.PerfCounterCollector"/>
    </TelemetryModules>
    
    <TelemetryProcessors>
    <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.
    QuickPulse.QuickPulseTelemetryProcessor, Microsoft.AI.PerfCounterCollector"/>
    </TelemetryProcessors>
    
  3. アプリケーションを再起動します

"データに一時的にアクセスできません" ステータス メッセージ

Live Metrics に移動すると、次のステータス メッセージのバナーが表示されることがあります: "データに一時的にアクセスできません。 状態に関する最新情報をこちらでお知らせします https://aka.ms/aistatus "

[Azure の状態] ページへのリンクに従って、Application Insights に影響を与えるアクティブ化の停止があるかどうかをチェックします。 停止が発生していない場合、ファイアウォールとブラウザー拡張機能がライブ メトリクスへのアクセスをブロックしていないことを確認します。 たとえば、いくつかの一般的な広告ブロッカー拡張機能は、*.monitor.azure.com への接続をブロックします。 Live Metrics の完全な機能を使うには、広告ブロッカー拡張機能を無効にするか、広告ブロッカーやファイアウォールなどにドメイン *.livediagnostics.monitor.azure.com の除外ルールを追加します。

livediagnostics.monitor.azure.com への予期しないほど多数の要求

Application Insights SDK では、REST API を使用して QuickPulse エンドポイントと通信します。これにより、Web アプリケーションのライブ メトリックが提供されます。 既定では、Azure portal で [ライブ メトリック] ウィンドウを表示している場合、SDK はエンドポイントを 5 秒ごとに 1 回ポーリングしてチェックします。

[ライブ メトリック] ペインを開くと、SDK は高頻度モードに切り替わり、新しいメトリックを 1 秒ごとに QuickPulse に送信します。 これにより、1 秒の待機時間でライブ アプリケーションを監視および診断できるだけでなく、より多くのネットワーク トラフィックも生成されます。 通常のトラフィック フローを復元するには、[ライブ メトリック] ペインから移動します。

Note

SDK によって QuickPulse エンドポイントに対して行われた REST API 呼び出しは Application Insights で追跡されず、依存関係の呼び出しやその他のメトリックには影響しません。 ただし、他のネットワーク監視ツールに表示される場合があります。

次のステップ