日本語版
最新ニュース
企業

KQL を使用した Azure Application Insights のトラブルシューティング

https://world.optimizely.com/service-request-forms/access-to-dxp-portal/ で DXP 管理ポータルへのアクセスをリクエストしている場合、ユーザーは少なくとも最小アクセス レベル内でも Azure Application Insights にアクセスできます。 Azure Application Insights は、アプリケーションの正常性、パフォーマンス、使用状況をリアルタイムで追跡するのに役立つ強力なアプリケーション パフォーマンス監視 (APM) サービスです。リクエスト、依存関係、例外、トレース、カスタム イベントなどのテレメトリを通じてエンドツーエンドの可観測性を提供し、開発者が異常を迅速に検出し、問題を診断し、ユーザーの行動を理解できるようにします。組み込みのダッシュボード、分析、Azure Monitor とのシームレスな統合により、信頼性を向上させ、パフォーマンスを最適化し、全体的なユーザー エクスペリエンスを向上させる深い洞察が得られます。提供されたダッシュ ボードだけでは十分ではない場合があり、開発者はテレメトリに対してクエリを実行する必要があります。Kusto クエリ言語 (KQL) はそのデータのロックを解除するエンジンです。 KQL を使用すると、テレメトリを大規模にスライスして分析できる柔軟性が得られます。 KQL の基本 Application Insights は、テレメトリを次のようなテーブルに保存します。 リクエスト - 受信 HTTP リクエスト - 名前、URL、期間、resultCode、成功…

KQL を使用した Azure Application Insights のトラブルシューティング

1766684054
2025-12-21 17:31:00

https://world.optimizely.com/service-request-forms/access-to-dxp-portal/ で DXP 管理ポータルへのアクセスをリクエストしている場合、ユーザーは少なくとも最小アクセス レベル内でも Azure Application Insights にアクセスできます。 Azure Application Insights は、アプリケーションの正常性、パフォーマンス、使用状況をリアルタイムで追跡するのに役立つ強力なアプリケーション パフォーマンス監視 (APM) サービスです。リクエスト、依存関係、例外、トレース、カスタム イベントなどのテレメトリを通じてエンドツーエンドの可観測性を提供し、開発者が異常を迅速に検出し、問題を診断し、ユーザーの行動を理解できるようにします。組み込みのダッシュボード、分析、Azure Monitor とのシームレスな統合により、信頼性を向上させ、パフォーマンスを最適化し、全体的なユーザー エクスペリエンスを向上させる深い洞察が得られます。提供されたダッシュ ボードだけでは十分ではない場合があり、開発者はテレメトリに対してクエリを実行する必要があります。Kusto クエリ言語 (KQL) はそのデータのロックを解除するエンジンです。 KQL を使用すると、テレメトリを大規模にスライスして分析できる柔軟性が得られます。

KQL の基本

Application Insights は、テレメトリを次のようなテーブルに保存します。

  • リクエスト – 受信 HTTP リクエスト – 名前、URL、期間、resultCode、成功
  • 依存関係 – 外部呼び出し (DB、API) – タイプ、ターゲット、名前、期間、成功
  • 例外 – アプリケーション例外 – タイプ、メッセージ、outerMessage、problemId
  • トレース – カスタム ログ メッセージ – メッセージ、重大度レベル
  • CustomMetrics – カスタム パフォーマンス – メトリクス名、値
  • pageViews – クライアント側のページビュー – 名前、URL、期間
  • 痕跡
  • 可用性結果
  • カスタムイベント

一般的な演算子

  • ここで – 行をフィルタリングします
  • プロジェクト – 特定の列を選択します
  • summary – 集計 (カウント、平均、パーセンタイル)
  • extend – 計算フィールドを作成する
  • join – テーブルを結合する
  • order by – 結果の並べ替え
  • take – 行を制限する

制限事項

  • クエリ タイムアウト: 最大実行時間は 3 分、大規模なデータセットにはサンプリングまたは時間フィルタリングが必要な場合があります。
  • 結果セットのサイズ: 返される最大 500,000 行
  • データ保持: 詳細データの場合は 90 日 (最大 730 日まで構成可能)、長期保持には Log Analytics または Storage へのエクスポートが必要です。
  • 同時クエリ: 高負荷時に適用されるスロットル
  • サンプリング: Application Insights は適応サンプリングを適用する場合があります。 itemCount を使用しない限り、これはカウントに影響を与える可能性があります。
  • データ変更なし: KQL は読み取り専用です。テレメトリを更新または削除することはできません。
  • 結合の制限: 大きなテーブルの結合は遅くなったり、切り捨てられたりする可能性があります。
  • クエリの複雑さ: 一部の高度な操作 (再帰ロジックなど) はサポートされていません。

モニタリングとトラブルシューティングのベスト プラクティス

Use Time Filters Early
requests
| where timestamp > ago(1h)
This improves performance dramatically.

Project Only What You Need
| project name, duration
Reduces memory and speeds up queries.

Use Summaries for High-Volume Data
Instead of returning thousands of rows:
| summarize count() by name

Use itemCount When Sampling Is Enabled
| summarize total = sum(itemCount)

Correlate Telemetry Using Operation Id
requests
| join traces on operation_Id

今後の参照用の KQL リファレンス

// Basic query pattern
TableName
| where Timestamp > ago(1d)  // Filtering
| where Operation_Name == "HomeController.Index"
| project Column1, Column2    // Selecting columns
| summarize Count = count() by Column1  // Aggregation
| order by Count desc        // Sorting
| limit 10                   // Limiting results

Filtering with where:
requests
| where timestamp > ago(24h)
| where success == false
| where duration > 1000  // Duration in milliseconds

Selecting columns with project:
requests
| project timestamp, name, url, duration, resultCode
| take 100

Aggregation with summarize:
requests
| summarize 
    AvgDuration = avg(duration),
    RequestCount = count(),
    FailedCount = countif(success == false)
    by name, bin(timestamp, 1h)

Top 5 Slowest Requests:
requests
| where timestamp > ago(7d)
| top 5 by duration desc
| project timestamp, name, duration, url, resultCode

Failure Rate Trend:
requests
| where timestamp > ago(30d)
| summarize 
    TotalRequests = count(),
    FailedRequests = countif(success == false)
    by bin(timestamp, 1d)
| extend FailureRate = FailedRequests * 100.0 / TotalRequests
| order by timestamp asc
| render timechart

Exception Analysis:
exceptions
| where timestamp > ago(1d)
| summarize Count = count() by type, innermostMessage
| order by Count desc
| take 20

Alert on Patterns, Not Single Events
Use:
avg(duration)
percentile(duration, 95)
count()

Explore Requests
requests
| summarize count(), avg(duration) by name

Find Failing Dependencies
dependencies
| where success == false
| summarize count() by target, type

Trace-Level Debugging
traces
| where severityLevel >= 3
| order by timestamp desc

Exception Analysis
exceptions
| summarize count() by type, innermostMessage

User Behavior
customEvents
| summarize count() by name

End-to-End Transaction Diagnostics
requests
| where operation_Id == ""

Using parse to Extract Data
traces
| parse message with "User:" userId ", Action:" action

Using bin() for Time Bucketing
requests
| summarize count() by bin(timestamp, 5m)

Using join for Correlation
requests
| join kind=leftouter dependencies on operation_Id

Using make-series for Time-Series Analysis
requests
| make-series count() on timestamp in range(ago(1d), now(), 1h)

2025 年 12 月 21 日

#KQL #を使用した #Azure #Application #Insights #のトラブルシューティング

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。