Live Metrics: 1 秒の待機時間での監視と診断
Application Insights の Live Metrics (QuickPulse とも呼ばれています) を使用して、実稼働中の Web アプリケーションを監視します。 メトリックやパフォーマンス カウンターを選択してフィルター処理し、サービスに支障をきたすことなく、リアルタイムで監視できます。 失敗した要求と例外のサンプルからスタック トレースを確認することもできます。 Live Metrics をプロファイラーとスナップショット デバッガーと併用することにより、実稼働中の Web サイト向けの強力で非侵襲的な診断ツールを利用できます。
Note
Live Metrics では、TLS 1.2 のみがサポートされます。 詳細については、トラブルシューティングのヒントに関するページをご覧ください。
Live Metrics を使用すると、次のことが可能になります。
- 修正がリリースされている間に、パフォーマンスと失敗の数を確認して、修正を検証します。
- テスト負荷の影響を監視し、問題をライブで診断します。
- 監視するメトリックを選択してフィルタリングすることにより、特定のテスト セッションに焦点を当てたり、既知の問題を除外したりできます。
- 発生時に例外トレースを取得します。
- フィルターを試して、最も関連性の高い KPI を検索します。
- すべての Windows パフォーマンス カウンターをライブで監視します。
- 問題が発生しているサーバーを簡単に特定し、すべての KPI/ライブ フィードをフィルター処理してそのサーバーだけに絞り込むことができます。
現在、Live Metrics は ASP.NET、ASP.NET Core、Azure Functions、Java、Node.js のアプリでサポートされています。
Note
Live Metrics によって表示される監視対象のサーバー インスタンス数は、アプリケーションに割り当てられている実際のインスタンス数よりも少ない場合があります。 多くの最新の Web サーバーが、リソースを節約するために、一定の時間にわたって要求を受信しないアプリケーションをアンロードするため、この不整合が発生します。 Live Metrics を使用すると、アプリケーションを現在実行しているサーバーのみがカウントされるため、プロセスを既にアンロードしているサーバーはその合計には含まれません。
はじめに
重要
ASP.NET Core LTS アプリケーションを監視するには、Application Insights バージョン 2.8.0 以上が必要です。 Application Insights を有効にするには、Azure portal でアクティブにし、Application Insights NuGet パッケージを含めます。 NuGet パッケージを使用しない場合、一部のテレメトリが Application Insights に送信されますが、そのテレメトリは Live Metrics には表示されません。
言語固有のガイドラインに従い、Live Metrics を有効にします。
- ASP.NET: Live Metrics は既定で有効になっています。
- ASP.NET Core: Live Metrics は既定で有効になっています。
- .NET/.NET Core Console/Worker: Live Metrics は既定で有効になっています。
- .NET Applications: コードを使用して有効にします。
- Java: Live Metrics は既定で有効になっています。
- Node.js
Azure Portal で、お使いのアプリの Application Insights リソースを開きます。 その後、Live Stream を開きます。
フィルターに顧客名などの機密データを使用する場合は、コントロール チャネルを保護します。
注意
インストルメンテーション キーのインジェストのサポートは、2025 年 3 月 31 日に終了します。 インストルメンテーション キーのインジェストは引き続き機能しますが、この機能の更新プログラムやサポートは提供されなくなります。 接続文字列に移行することで、新機能をご利用いただけます。
あらゆる .NET アプリケーションに対してコードを使用して Live Metrics を有効にする
注意
.NET アプリケーションに推奨される手順を使用してオンボードした場合、Live Metrics は既定で有効になっています。
Live Metrics を手動で構成するには:
NuGet パッケージ Microsoft.ApplicationInsights.PerfCounterCollector をインストールします。
次のサンプル コンソール アプリ コードは、LiveMetrics の設定方法を示しています。
using Microsoft.ApplicationInsights; using Microsoft.ApplicationInsights.Extensibility; using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse; using System; using System.Threading.Tasks; namespace LiveMetricsDemo { class Program { static void Main(string[] args) { // 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 をプロットしています。 [ストリームのプレビュー] セクションでフィルターを検証します。このセクションには、指定した条件といずれかの時点で一致するテレメトリのライブ フィードが表示されます。
Count 以外の値を監視できます。 オプションはストリームの種類によって異なります。ストリームの種類には、任意の Application Insights テレメトリ (要求、依存関係、例外、トレース、イベント、メトリックなど) を指定できます。 また、独自のカスタム測定を指定することもできます。
Application Insights テレメトリと共に、任意の Windows パフォーマンス カウンターを監視することもできます。 ストリーム オプションから選択し、パフォーマンス カウンターの名前を指定します。
Live Metrics は 2 つのポイントで集計されます。具体的には、サーバーごとにローカルで集計された後、すべてのサーバーにわたって集計されます。 どちらについても、それぞれのドロップダウン リストで他のオプションを選択することで既定値を変更できます。
サンプル テレメトリ: カスタム ライブ診断イベント
既定では、イベントのライブ フィードには失敗した要求と依存関係呼び出し、例外、イベント、トレースのサンプルが表示されます。 フィルター アイコンを選択すると、任意の時点で適用された条件が表示されます。
メトリックと同様に、Application Insights Telemetry の種類のいずれかに任意の条件を指定できます。 この例では、特定の要求エラーとイベントを選択しています。
Note
現時点では、例外メッセージ ベースの条件には、最も外側の例外メッセージを使用します。 前の例では、[The client disconnected](クライアントが切断されました) という内部例外メッセージ ("<--" 区切り記号の後) が示されている害のない例外を除外するために、[Error reading request content](要求内容の読み取りエラー) が含まれていないメッセージという条件を使用します。
ライブ フィードの項目を選択して、詳細を表示します。 フィードを一時停止するには、[一時停止] を選択するか、下にスクロールして項目を選択します。 スクロールして上部に戻るか、一時停止されている間に収集された項目のカウンターを選択すると、ライブ フィードが再開されます。
サーバー インスタンスによるフィルター処理
特定のサーバー ロール インスタンスを監視する場合は、サーバーでフィルター処理できます。 フィルターを適用するには、[サーバー] でサーバー名を選択します。
コントロール チャネルの保護
Live Metrics のカスタム フィルターを使用すると、アプリケーションのテレメトリのうち、Azure portal 内の Live Metrics ビューにストリーミングされるテレメトリを制御できます。 フィルター条件は、Application Insights SDK でインストルメント化されたアプリに送信されます。 フィルター値に顧客 ID などの機密情報が含まれている可能性があります。 この値をセキュリティで保護し、承認されていないアプリケーションに漏えいする可能性を防ぐには、次の 2 つのオプションがあります。
- 推奨: Azure Active Directory (Azure AD) 認証を使用して Live Metrics チャネルをセキュリティで保護します。
- レガシ (推奨されなくなりました): [Legacy option](レガシ オプション) セクションで説明するようにシークレット API キーを構成して、認証されたチャネルを設定します。
注意
2025 年 9 月 30 日に、Live Metrics テレメトリを Application Insights にストリーミングするために使用される API キーが廃止されます。 その日を過ぎると、API キーを使用するアプリケーションは、Live Metrics データを Application Insights リソースに送信できなくなります。 Application Insights にストリーミングする Live Metrics の認証済みテレメトリ インジェストは、Application Insights に対する Azure AD 認証を使用して実行する必要があります。
認証されたチャネルを設定せずにカスタム フィルターを試すことができます。 フィルター アイコンのいずれかを選択して、接続されたサーバーを承認します。 このオプションを選択する場合は、新しいセッションごとに、または新しいサーバーがオンラインになるたびに、接続されているサーバーを承認する必要があります。
警告
セキュリティで保護されていないチャネルを使用しないことを強くお勧めしす。このオプションは、使用を開始してから 6 か月後に無効になります。 [Authorize connected servers] (接続されたサーバーの承認) ダイアログに、このオプションが無効になる日付が表示されます。
レガシ オプション: API キーを作成する
[API アクセス] タブを選択し、[API キーの作成] を選択します。
[SDK コントロール チャネルの認証] チェックボックスをオンにし、[キーの生成] を選択します。
API キーを構成に追加する
ASP.NET、ASP.NET Core、WorkerService、Azure Functions アプリの構成に API キーを追加できます。
ASP.NET
ApplicationInsights.config ファイルで、AuthenticationApiKey
を QuickPulseTelemetryModule
に追加します。
<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse.QuickPulseTelemetryModule, Microsoft.AI.PerfCounterCollector">
<AuthenticationApiKey>YOUR-API-KEY-HERE</AuthenticationApiKey>
</Add>
ASP.NET Core
ASP.NET Core アプリケーションについては、こちらの指示に従ってください。
Startup.cs ファイルの ConfigureServices
を次のように変更します。
次の名前空間を追加します。
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;
その後、ConfigureServices
メソッドを変更します。
public void ConfigureServices(IServiceCollection services)
{
// Existing code which includes services.AddApplicationInsightsTelemetry() to enable Application Insights.
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 以降) | サポートされていません |
基本メトリックには、要求、依存関係、例外率が含まれます。 パフォーマンス メトリック (パフォーマンス カウンター) には、メモリと 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 の構成が見つかりません
NuGet パッケージMicrosoft.ApplicationInsights.PerfCounterCollector の最新バージョンを使用していることを確認します。
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>
アプリケーションを再起動します
"データに一時的にアクセスできません" ステータス メッセージ
Live Metrics に移動すると、次のステータス メッセージのバナーが表示されることがあります: "データに一時的にアクセスできません。 状態に関する最新情報をこちらでお知らせします https://aka.ms/aistatus"
ファイアウォールやブラウザー拡張機能によって Live Metrics へのアクセスがブロックされていないかどうかを確認します。 たとえば、一般的な広告ブロッカー拡張機能の中には、*.monitor.azure.com への接続をブロックするものがあります。 Live Metrics の完全な機能を使うには、広告ブロッカー拡張機能を無効にするか、広告ブロッカーやファイアウォールなどにドメイン livediagnostics.monitor.azure.com の除外ルールを追加します。
livediagnostics.monitor.azure.com への予期しないほど多数の要求
LiveMetrics ペインが開いている間は、トラフィックの負荷が高くなることが予想されます。 通常のトラフィック フローを復元するには、LiveMetrics ペインから移動します。 Application Insights SDK は、REST API 呼び出しを使用して QuickPulse エンドポイントを 5 秒ごとに 1 度ポーリングし、LiveMetrics ペインが表示されているかどうかを確認します。
SDK は、LiveMetrics ペインが開いている間、1 秒ごとに新しいメトリックを QuickPulse に送信します。