Application Insights のメトリック
Application Insights では、標準 (事前集計)、ログ ベース、カスタム メトリックの 3 種類のメトリックがサポートされています。 それぞれ、アプリケーションの正常性の監視、診断、分析において独自の価値があります。 アプリケーションをインストルメント化している開発者の場合は、特定のシナリオに最適なメトリックの種類を判断できます。 判断は、アプリケーションのサイズ、予想されるテレメトリの量、メトリックの精度とアラートに関するビジネス要件に基づいて行います。 この記事では、サポートされているすべてのメトリックの種類の違いについて説明します。
標準メトリック
Application Insights の標準メトリックは、サービスによって自動的に収集および監視される定義済みのメトリックです。 これらのメトリックは、CPU 使用率、メモリ使用量、要求レート、応答時間など、さまざまなパフォーマンスと使用状況のインジケーターに対応しています。 標準メトリックは、追加の構成を必要とせずに、アプリケーションの正常性とパフォーマンスの包括的な概要を提供します。 標準メトリックは、収集中に事前に集計され、キー ディメンションのみを持つ特殊なリポジトリに時系列として格納されるため、クエリ時のパフォーマンスが向上します。 これにより、標準メトリックは、メトリックのディメンションに関するほぼリアルタイムのアラートや応答性の高いダッシュボードに対する最適な選択肢になります。
ログベースのメトリック
Application Insights のログ ベースのメトリックは、クエリ時間の概念であり、アプリケーションのログ データの上に時系列として表されます。 基になるログは、コレクションまたはストレージの時点で事前に集計されず、各ログ エントリのすべてのプロパティを保持します。 このリテンション期間により、クエリ時にログ ベースのメトリックのディメンションとしてログ プロパティを使用して、メトリック グラフのフィルター処理とメトリックの分割を行い、ログ ベースのメトリックに優れた分析値と診断値を提供できます。 ただし、 サンプリングやテレメトリ フィルタリングなどのテレメトリ ボリューム削減手法は、大量のテレメトリを生成するアプリケーションの監視でよく使用され、収集されたログ エントリの量に影響するため、ログ ベースのメトリックの精度が低下します。
カスタム メトリック (プレビュー)
Application Insights のカスタム メトリックを使用すると、アプリケーションに固有の特定の測定値を定義および追跡できます。 これらのメトリックは、カスタム テレメトリ データを Application Insights に送信するコードをインストルメント化することによって作成できます。 カスタム メトリックを使用すると、標準メトリックでカバーされていないアプリケーションのあらゆる側面を柔軟に監視できるため、アプリケーションの動作とパフォーマンスに関する詳細な分析情報を得ることができます。
詳細については、「Azure Monitor のカスタム メトリック (プレビュー)」を参照してください。
Note
Application Insights には、Live Metrics ストリームと呼ばれる機能も用意されています。これにより、Web アプリケーションのほぼリアルタイムの監視が可能になり、テレメトリ データは格納されません。
メトリックの比較
機能 | 標準メトリック | ログベースのメトリック | カスタム メトリック |
---|---|---|---|
データ ソース | 実行時に収集した、事前集計された時系列データ。 | Kusto クエリを使用してログ データから派生します。 | Application Insights SDK または API を介して収集されたユーザー定義メトリック。 |
細分性 | 固定間隔 (1 分)。 | ログ データ自体の粒度によって異なります。 | ユーザー定義メトリックに基づく柔軟な粒度。 |
精度 | 高。ログ サンプリングの影響を受けません。 | サンプリングとフィルター処理の影響を受ける可能性があります。 | 高精度。特に GetMetric などの事前集計メソッドを使用する場合において顕著。 |
原価 | Application Insights の価格に含まれます。 | ログ データインジェストとクエリ コストに基づく。 | 価格モデルと保持期間を参照してください。 |
Configuration | 最小限の構成で自動的に使用できます。 | ログ データから目的のメトリックを抽出するには、ログ クエリの構成が必要です。 | コードでのカスタム実装と構成が必要です。 |
クエリ パフォーマンス | 高速。事前集計により処理時間を短縮。 | 低速。ログ データのクエリ処理が必要。 | データ量とクエリの複雑さに依存します。 |
Storage | Azure Monitor メトリック ストアに時系列データとして格納されます。 | Log Analytics ワークスペースのログに保存する。 | Log Analytics ワークスペースと Azure Monitor メトリックの両方に保存されます。 |
アラート | リアルタイムのアラートをサポート。 | 詳細なログ データに基づく複雑なアラート シナリオを可能にします。 | ユーザー定義メトリックに基づく柔軟な粒度。 |
サービスの制限 | Application Insights の制限に従います。 | Log Analytics ワークスペースに関する制限に従います。 | 無料メトリックのクォータと追加ディメンションのコストによって制限されます。 |
ユース ケース | リアルタイムの監視、パフォーマンス ダッシュボード、および迅速な分析情報。 | 詳細な診断、トラブルシューティング、詳細な分析。 | 調整された業績評価指標とビジネス固有のメトリック。 |
使用例 | CPU 使用率、メモリ使用量、要求期間。 | 要求数、例外トレース、依存関係呼び出し。 | ユーザー エンゲージメント、機能の使用状況などのカスタム アプリケーション固有のメトリック。 |
メトリック (事前集計)
OpenTelemetry SDK と新しい Application Insights SDK (クラシックAPI) は、収集時にメトリックを事前集計することで、SDK からテレメトリ チャネル エンドポイントへ送信されるデータ量を削減します。 このプロセスは既定で送信される標準メトリックに適用されるため、正確性がサンプリングやフィルター処理の影響を受けることはありません。 また、OpenTelemetry API または GetMetric and TrackValue を使用して送信されるカスタム メトリックにも適用されるため、データ インジェストが減り、コストが削減されます。 Application Insights SDK のバージョンで GetMetric と TrackValue がサポートされている場合は、カスタム メトリックを送信する方法が推奨されます。
事前の集計を実装しない SDK の場合 (つまり、以前のバージョンの Application Insights SDK、またはブラウザー インストルメンテーションの場合)、Application Insights バックエンドでは引き続き、Application Insights テレメトリ チャネル エンドポイントによって受信されるイベントを集計することで、新しいメトリックが設定されます。 カスタム メトリックの場合は、trackMetric メソッドを使用できます。 ネットワーク経由で送信されるデータ量が減る利点はありませんが、引き続き事前に集計されたメトリックを使用できます。また、収集時にメトリックを事前に集計しない SDK でのほぼリアルタイムのディメンション アラートのパフォーマンスとサポートが向上します。
テレメトリ チャネル エンドポイントにより、インジェスト サンプリングの前にイベントが事前に集計されます。 このため、アプリケーションで使う SDK バージョンに関係なく、インジェスト サンプリングは事前に集計されたメトリックの精度に影響を与えることはありません。
次の表に、事前集計が行われる場所を示します。
Azure Monitor OpenTelemetry Distro を使用したメトリックの事前集計
現在の本番環境 SDK | 標準メトリック (事前集計) | カスタム メトリック (事前集計) |
---|---|---|
ASP.NET Core | SDK | OpenTelemetry API を使用した SDK |
.NET (エクスポーター経由) | SDK | OpenTelemetry API を使用した SDK |
Java (3.x) | SDK | OpenTelemetry API を使用した SDK |
Java ネイティブ | SDK | OpenTelemetry API を使用した SDK |
Node.js | SDK | OpenTelemetry API を使用した SDK |
Python | SDK | OpenTelemetry API を使用した SDK |
Application Insights SDK を使用したメトリックの事前集計 (クラシック API)
現在の本番環境 SDK | 標準メトリック (事前集計) | カスタム メトリック (事前集計) |
---|---|---|
.NET Core と .NET Framework | SDK (V2.13.1+) | GetMetric を使用した SDK (V2.7.2+) TrackMetric を使用したテレメトリ チャネル エンドポイント |
Java (2.x) | テレメトリ チャネル エンドポイント | TrackMetric を使用したテレメトリ チャネル エンドポイント |
JavaScript (ブラウザー) | テレメトリ チャネル エンドポイント | TrackMetric を使用したテレメトリ チャネル エンドポイント |
Node.js | テレメトリ チャネル エンドポイント | TrackMetric を使用したテレメトリ チャネル エンドポイント |
Python | テレメトリ チャネル エンドポイント | OpenCensus.stats 経由の SDK (廃止) TrackMetric を使用したテレメトリ チャネル エンドポイント |
注意事項
Application Insights Java 2.x SDK は推奨されなくなりました。 代わりに、OpenTelemetry ベースの Java オファリング を使用してください。
OpenCensus Python SDK は廃止されました。 現在は OpenTelemetry ベースの Python オファリングを推奨しており、移行ガイダンスを提供しています。
自動インストルメンテーションを使用したメトリックの事前集計
自動インストルメンテーションを使用すると、SDK はアプリケーション コードに自動的に追加され、カスタマイズすることはできません。 カスタム メトリックの場合は、手動インストルメンテーションが必要です。
現在の本番環境 SDK | 標準メトリック (事前集計) | カスタム メトリック (事前集計) |
---|---|---|
ASP.NET Core | SDK 1 | サポートされていません |
ASP.NET | SDK 2 | サポートされていません |
Java | SDK | サポート対象 3 |
Node.js | SDK | サポートされていません |
Python | SDK | サポートされていません |
脚注
- 1 App Service での ASP.NET Core 自動インストルメンテーションでは、ディメンションのない標準メトリックが出力されます。 すべてのディメンションには手動インストルメンテーションが必要です。
- 2 仮想マシンまたは仮想マシン スケール セット上およびオンプレミス上の ASP.NET 自動インストルメンテーションにより、ディメンションなしの標準メトリックが出力されます。 Azure App Service の場合と同じですが、コレクション レベルを推奨に設定する必要があります。 すべてのディメンションには手動インストルメンテーションが必要です。
- 3 自動インストルメンテーションで使用される Java エージェントは、一般的なライブラリによって出力されたメトリックをキャプチャし、カスタム メトリックとして Application Insights に送信します。
カスタム メトリックのディメンションと事前集計
OpenTelemetry、trackMetric、または GetMetric および TrackValue API 呼び出しを使用して送信するメトリックはすべて、メトリック ストアとログの両方に自動的に格納されます。 これらのメトリックは、Application Insights の customMetrics テーブルと、メトリックス エクスプローラーの azure.applicationinsights という名前のカスタム メトリック名前空間にあります。 ログベース バージョンのカスタム メトリックでは常にすべてのディメンションが保持されますが、事前集計バージョンのメトリックは既定でディメンションなしで格納されます。 カスタム メトリックのディメンションの保持はプレビュー機能です。これを有効にするには、[使用量と推定コスト] タブで [カスタム メトリクスを Azure Metric Store に送信する] の下にある [ディメンションあり] を選択します。
Quotas (クォータ)
事前に集計されたメトリックは、Azure Monitor に時系列として格納されます。 [Azure Monitor quotas on custom metrics] (カスタム メトリックに対する Azure Monitor のクォータ) が適用されます。
Note
クォータを超えると、意図しない結果になることがあります。 サブスクリプションまたはリージョンで Azure Monitor の信頼性が低下する可能性があります。 クォータを超えないようにする方法については、「設計の制限と考慮事項」を参照してください。
既定でカスタム メトリック ディメンションの収集が無効になる理由
カスタム メトリック ディメンションの収集は既定でオフです。これは、将来的にディメンションと共にカスタム メトリックを保存したときに Application Insights とは別に課金されるからです。 非ディメンション カスタム メトリックの保存は引き続き無料です (クォータが上限です)。 今後の価格モデル変更の詳細については、Microsoft の公式の価格ページで確認できます。
グラフを作成してメトリックを探索する
Azure Monitor メトリックス エクスプローラーを使用して、事前に集計されたメトリックとログ ベースおよびカスタム メトリックに基づいてグラフを描画し、そのグラフを使ってダッシュボードを作成します。 必要な Application Insights リソースを選んでから、名前空間ピッカーを使ってメトリックを切り替えます。
Application Insights メトリックの価格モデル
メトリックを Application Insights に取り込むと、ログベースか事前に集計されているかにかかわらず、取り込まれたデータのサイズに基づいてコストが発生します。 詳細については、Azure Monitorログの価格の詳細に関するページを参照してください。 カスタム メトリックは、そのすべてのディメンションを含めて、常に Application Insights ログ ストアに格納されます。 また、ディメンションのないカスタム メトリックの事前集計バージョンは、既定でメトリック ストアに転送されます。
[カスタム メトリック ディメンションに関するアラートを有効にします] オプションを選択して、事前に集計されたメトリックのすべてのディメンションをメトリック ストアに格納すると、カスタム メトリックの価格に基づいて "追加のコスト" が生じる可能性があります。
使用可能なメトリック
次のセクションでは、サポートされている集計とディメンションを含むメトリックの一覧を示します。 ログベースのメトリックの詳細情報には、基になる Kusto クエリ ステートメントが含まれています。
可用性のメトリック
可用性カテゴリのメトリックを使用すると、世界中の地点から観察された Web アプリケーションの正常性を確認できます。 このカテゴリにあるメトリックの使用を開始するには、可用性テストを構成します。
可用性 (availabilityResults/availabilityPercentage)
可用性メトリックは、問題が検出されなかった Web テストの実行の割合を示します。 可能な最小値は 0 で、これはすべての Web テストの実行が失敗したことを示します。 値 100 は、すべての Web テストの実行が検証条件に合格したことを意味します。
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
割合 | Avg | Run location 、Test name |
可用性テスト継続時間 (availabilityResults/duration)
可用性テスト継続時間メトリックは、Web テストの実行にかかった時間を示します。 複数ステップの Web テストの場合、メトリックには、すべてのステップの合計実行時間が反映されます。
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
Milliseconds | Avg、Max、Min | Run location 、Test name 、Test result |
可用性テスト (availabilityResults/count)
可用性テストのメトリックには、Azure Monitor によって実行される Web テストの数が反映されます。
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
Count | Count | Run location 、Test name 、Test result |
ブラウザー メトリック
ブラウザー メトリックは、実際のエンドユーザーのブラウザーから Application Insights JavaScript SDK によって収集されます。 これらは Web アプリでのユーザー エクスペリエンスに関する優れた分析情報を提供します。 通常、ブラウザー メトリックはサンプリングされません。つまり、サンプリングによって偏る可能性があるサーバー側のメトリックと比較して、使用状況の数値の精度が高くなります。
Note
ブラウザー メトリックを収集するには、アプリケーションを Application Insights JavaScript SDK でインストルメント化する必要があります。
ブラウザーのページ読み込み時間 (browserTimings/totalDuration)
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
Milliseconds | Avg、Max、Min | なし |
クライアントの処理時間 (browserTiming/processingDuration)
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
Milliseconds | Avg、Max、Min | なし |
ページ読み込みのネットワーク接続時間 (browserTimings/networkDuration)
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
Milliseconds | Avg、Max、Min | なし |
受信側の応答時間 (browserTimings/receiveDuration)
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
Milliseconds | Avg、Max、Min | なし |
送信要求時間 (browserTimings/sendDuration)
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
Milliseconds | Avg、Max、Min | なし |
失敗のメトリック
失敗のメトリックには、処理要求、依存関係呼び出し、およびスローされた例外に関する問題が表示されます。
ブラウザーの例外 (exceptions/browser)
このメトリックは、ブラウザーで実行されているアプリケーション コードからスローされた例外の数を反映します。 メトリックには、trackException()
Application Insights API 呼び出しで追跡される例外のみが含まれます。
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
Count | Count | Cloud role name |
依存関係呼び出しの失敗数 (dependencies/failed)
失敗した依存関係呼び出しの数。
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
Count | Count | Cloud role instance 、Cloud role name 、Dependency performance 、Dependency type 、Is traffic synthetic 、Result code 、Target of dependency call |
例外 (exceptions/count)
Application Insights に例外を記録するたびに、SDK のtrackexception () メソッドが呼び出されます。 例外メトリックは、ログに記録された例外の数を示します。
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
Count | Count | Cloud role instance 、Cloud role name 、Device type |
失敗した要求 (requests/failed)
失敗としてマークされた追跡されたサーバー要求の数。 既定では、Application Insights SDK は HTTP 応答コード 5xx または 4xx を返した各サーバー要求を、失敗した要求として自動的にマークします。 このロジックをカスタマイズするには、カスタムのテレメトリ初期化子の要求テレメトリ項目の success プロパティを変更します。
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
Count | Count | Cloud role instance 、Cloud role name 、Is synthetic traffic 、Request performance 、Result code |
サーバーの例外 (exceptions/server)
このメトリックは、サーバーの例外の数を示します。
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
Count | Count | Cloud role instance 、Cloud role name |
パフォーマンス カウンター
パフォーマンス カウンター カテゴリのメトリックを使用して、Application Insights によって収集されたシステム パフォーマンス カウンターにアクセスします。
使用可能なメモリ (performanceCounters/availableMemory)
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
メガバイト/ギガバイト (データ依存) | Avg、Max、Min | Cloud role instance |
例外レート (performanceCounters/exceptionRate)
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
カウント | Avg、Max、Min | Cloud role instance |
HTTP 要求実行時間 (performanceCounters/requestExecutionTime)
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
Milliseconds | Avg、Max、Min | Cloud role instance |
HTTP 要求率 (performanceCounters/requestsPerSecond)
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
1 秒あたりの要求数 | Avg、Max、Min | Cloud role instance |
アプリケーション キュー内の HTTP 要求 (performanceCounters/requestsInQueue)
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
カウント | Avg、Max、Min | Cloud role instance |
プロセス CPU (performanceCounters/processCpuPercentage)
このメトリックは、監視対象のアプリをホストしているプロセスによって消費されるプロセッサの容量の合計を示します。
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
割合 | Avg、Max、Min | Cloud role instance |
Note
メトリックの範囲は、0 から 100 * n です。n は、使用可能な CPU コアの数です。 たとえば、メトリック値が 200% の場合、2 つの CPU コアの全使用率、または 4 つの CPU コアの半分の使用率を示している可能性があります。 "正規化されたプロセス CPU" は、同じ値を示すものの、使用可能な CPU コアの数で分割された多くの SDK によって収集される代替メトリックです。 このため、"プロセス CPU の正規化" メトリックの範囲は、0 から 100 です。
プロセス IO 量 (performanceCounters/processIOBytesPerSecond)
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
バイト/秒 | 平均、最小、最大 | Cloud role instance |
プロセス プライベート バイト (performanceCounters/processPrivateBytes)
監視対象プロセスによってデータに割り当てられた非共有メモリの量。
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
バイト | 平均、最小、最大 | Cloud role instance |
プロセッサ時間 (performanceCounters/processorCpuPercentage)
監視対象のサーバー インスタンスで実行されているすべてのプロセスによる CPU 使用量。
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
パーセント | 平均、最小、最大 | Cloud role instance |
Note
プロセッサ時間メトリックは、Azure App Service でホストされているアプリケーションでは使用できません。 App Services でホストされている Web アプリケーションの CPU 使用率を追跡するには、プロセス CPU メトリックを使用します。
サーバー メトリック
依存関係呼び出し (dependencies/count)
このメトリックは、依存関係呼び出しの数に関連しています。
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
Count | Count | Cloud role instance , Cloud role name , Dependency performance , Dependency type , Is traffic synthetic , Result code , Successful call , Target of a dependency call |
依存関係の期間 (dependencies/duration)
このメトリックは、依存関係呼び出しの期間を示します。
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
Milliseconds | Avg、Max、Min | Cloud role instance , Cloud role name , Dependency performance , Dependency type , Is traffic synthetic , Result code , Successful call , Target of a dependency call |
サーバー要求率 (requests/rate)
このメトリックは、Web アプリケーションによって受信された受信サーバー要求の数を反映します。
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
1 秒あたりの数 | Avg | Cloud role instance 、Cloud role name 、Is traffic synthetic 、Request performance Result code 、Successful request |
サーバー要求 (requests/count)
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
Count | Count | Cloud role instance 、Cloud role name 、Is traffic synthetic 、Request performance Result code 、Successful request |
サーバー応答時間 (requests/duration)
このメトリックは、サーバーが受信要求を処理するのにかかった時間を反映します。
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
Milliseconds | Avg、Max、Min | Cloud role instance 、Cloud role name 、Is traffic synthetic 、Request performance Result code 、Successful request |
使用状況メトリック
ページ ビューの読み込み時間 (pageViews/duration)
このメトリックは、PageView イベントの読み込みにかかった時間を示します。
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
Milliseconds | Avg、Max、Min | Cloud role name 、Is traffic synthetic |
ページ ビュー (pageViews/count)
TrackPageView () Application Insights API でログに記録された PageView イベントの数。
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
Count | Count | Cloud role name 、Is traffic synthetic |
トレース (traces/count)
TrackTrace () Application Insights API 呼び出しを使用してログに記録されたトレース ステートメントの数。
Unit of measure | サポートされる集計 | サポートされるディメンション |
---|---|---|
Count | Count | Cloud role instance 、Cloud role name 、Is traffic synthetic , Severity level |
カスタム メトリック
Application Insights REST API を使用してログ ベースのメトリックに直接アクセスする
Application Insights REST API を使用すると、ログ ベースのメトリックをプログラムで取得できます。 また、クエリ文字列にオプションのパラメーター ai.include-query-payload
を追加すると、API は時系列データに加えて、そのデータを取得するために使用された Kusto クエリ言語 (KQL) ステートメントも返します。 このパラメーターは、Log Analytics の生イベントと、それに基づくログ ベース メトリックの関係を理解したいユーザーにとって特に有用です。
データに直接アクセスするには、KQL を使用してクエリでパラメーター ai.include-query-payload
を Application Insights API に渡します。
Note
基になるログ クエリを取得するために、DEMO_APP
と DEMO_KEY
を置き換える必要はありません。 アプリケーションの時系列データではなく KQL ステートメントのみを取得したい場合は、ブラウザーの検索バーに直接コピーして貼り付けすることができます。
api.applicationinsights.io/v1/apps/DEMO_APP/metrics/users/authenticated?api_key=DEMO_KEY&prefer=ai.include-query-payload
以下は、メトリック "Authenticated Users” の返却される KQL ステートメントの例です。 (この例では、"users/authenticated"
はメトリック ID です。)
output
{
"value": {
"start": "2024-06-21T09:14:25.450Z",
"end": "2024-06-21T21:14:25.450Z",
"users/authenticated": {
"unique": 0
}
},
"@ai.query": "union (traces | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (requests | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (pageViews | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (dependencies | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (customEvents | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (availabilityResults | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (exceptions | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (customMetrics | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (browserTimings | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)) | where notempty(user_AuthenticatedId) | summarize ['users/authenticated_unique'] = dcount(user_AuthenticatedId)"
}