本文へスキップ

LLM API分析(トランザクション連携)

AI Agent ObservabilityはWhaTap APMと統合されており、LLM API呼び出しをアプリケーショントランザクションの一部として追跡します。トランザクションプロファイルでLLM HTTPCステップをクリックするとLLM API詳細Drawerが開き、プロンプト入力/出力、トークン使用量、コスト、エラー情報はもちろん、GPUインフラストラクチャの相関関係まで1つの画面で確認できます。

ノート

プロンプト入力/出力の照会にはログ読み取り権限が必要です。

LLM API分析

アクセス方法

  1. LLMダッシュボードのヒットマップまたはトランザクション検索などからトランザクションを選択します。
  2. トランザクションプロファイル画面でLLM HTTPCステップ(LLMプロバイダURLへのHTTP外部呼び出し)をクリックします。
  3. 右側にLLM API詳細Drawerが開きます。

サマリーおよびプロンプト

LLM呼び出しの主要情報を一目で確認でき、プロンプト入力/出力の原本を確認できる領域です。

Identityタグ

呼び出し対象のモデルとプロバイダ情報をタグ形式で表示します。

TagDescriptionExample
Model使用されたLLMモデル名gpt-4o, claude-sonnet-4-20250514
ProviderLLM APIプロバイダapi.openai.com, api.anthropic.com
Operation呼び出しのOperation Typechat, completion

呼び出しが失敗した場合(success=false)、赤色のErrorタグが追加で表示されます。

主要数値指標

Identityタグの横にインラインで表示されます。

MetricDescription
Token全体トークン数(Input + Output)
Cost該当呼び出しのコスト($)
Latencyリクエスト開始~応答完了時間(ms)

HTTP情報

PropertyDescription
URL呼び出しエンドポイント(host:port + path)
ElapsedHTTP呼び出し所要時間(ms)
Step IDこのLLM呼び出しの固有識別子。ログ検索への遷移基準キーです。

Step ID横のログ検索ボタンをクリックすると、該当Step IDでフィルタリングされたログエクスプローラーが新しいウィンドウで開きます。

エラー情報

呼び出しにエラーが発生した場合のみ表示されます。

PropertyDescription
Error Classエラークラス名(例: RateLimitErrorTimeoutError
Error Messageエラー詳細メッセージ

プロンプト入力(Input)

折りたたみ/展開が可能なセクションで、LLMに送信された入力メッセージを表示します。

ヘッダーバッジ

BadgeDescription
Input Tokens入力トークン数
Cached Tokensキャッシュから取得したトークン数(該当する場合のみ表示)
Input Cost ($)入力コスト

メッセージタイプ

LabelDescription
SYSTEMシステムメッセージ。モデルの役割と動作を定義する指示文です。
USERユーザー入力メッセージ。実際のプロンプト内容です。

メッセージがチャンク(chunk)に分割されて収集された場合、自動的に正しい順序で組み立てて完全なテキストとして表示します。

モデル応答(Output)

折りたたみ/展開が可能なセクションで、モデルが生成した応答を表示します。

ヘッダーバッジ

BadgeDescription
Output Tokens出力トークン数
Reasoning Tokens推論(Reasoning)トークン数(該当する場合のみ表示)
Output Cost ($)出力コスト

メッセージタイプ

LabelDescription
ASSISTANTモデルのテキスト応答です。
TOOL CALLモデルがリクエストしたツール呼び出し(Function Calling)の内容です。
TOOL RESULTツール呼び出しの実行結果です。

GPU相関関係

マルチトランザクション(mtidが存在する場合)の場合、Drawer右側に表示されます。LLM呼び出しを処理したPodのGPUインフラストラクチャ状態をリアルタイムチャートで表示し、モデル応答遅延がGPUリソース不足によるものかを判断できます。

GPU情報ヘッダー

PropertyDescription
PodLLM推論を実行したKubernetes Pod名
Pod詳細ボタンクリックするとKubernetesモニタリングのPod詳細ページが新しいウィンドウで開きます。

GPUチャート

LLM呼び出し時点の前後5分範囲のGPUメトリクスをラインチャートで表示します。

ChartMetricUnitDescription
GPU UtilizationDCGM_FI_DEV_WEIGHTED_GPU_UTIL%GPU演算リソースの使用率。100%に近い場合、GPUが飽和状態であり、LLM応答遅延の原因となる可能性があります。
VRAM UsageDCGM_FI_DEV_FB_USEDMiBGPUメモリ(Video RAM)使用量。モデルのロードと推論に使用され、不足するとOOMやスワップが発生します。
GPU TemperatureDCGM_FI_DEV_GPU_TEMP°CGPU温度。過熱時に自動スロットリングが発生し、性能が低下します。
Power UsageDCGM_FI_DEV_POWER_USAGEWGPU電力消費。Utilizationと合わせて確認すると、実際の演算負荷を把握できます。
ノート

GPU相関関係は以下の条件がすべて満たされた場合に表示されます。

  • トランザクションがマルチトランザクション(mtid存在)の場合
  • LLM推論を実行したPod名が識別された場合
  • 連携されたKubernetesプロジェクトでDCGM GPUメトリクスが収集されている場合

分析シナリオ

LLM応答遅延の原因特定

  1. LLMダッシュボードのヒットマップで応答時間が長いトランザクションをクリックします。
  2. トランザクションプロファイルでLLM HTTPCステップのElapsed時間を確認します。
  3. LLM API詳細Drawerを開いてLatency値とGPU Utilizationチャートを比較します。
  4. GPU Utilizationが高い状態でLatencyが急増している場合、GPUリソース不足が原因です。
  5. GPU Utilizationが低いのにLatencyが高い場合、プロバイダ側の遅延(キュー待ち、Rate Limitなど)を疑います。

エラー発生LLM呼び出しの再現

  1. トランザクションプロファイルでエラーが表示されたLLM HTTPCステップをクリックします。
  2. DrawerのError ClassError Messageでエラータイプを確認します。
  3. **プロンプト入力(Input)**セクションでSYSTEMメッセージとUSERメッセージの原本を確認します。
  4. 収集されたプロンプト原本とモデル/パラメータ情報で同一の呼び出しを再現し、問題を分析します。

コストが高いLLM呼び出しの分析

  1. コスト分析ページでコストが高い時間帯を特定します。
  2. 該当時間帯のトランザクションを検索してプロファイルを開き、LLM HTTPCステップをクリックします。
  3. DrawerでToken数とCostを確認します。
  4. プロンプト入力セクションでInput Tokensバッジを確認し、プロンプトが不必要に長くないか確認します。
  5. Cached Tokensバッジが0の場合、キャッシングが適用されていない呼び出しのため、キャッシング対象のプロンプトかどうかを検討します。

参考

データ収集構造

LLM API詳細Drawerは2つのデータソースを組み合わせています。

Data SourceDescriptionUsage
APMトレースHTTP呼び出し情報(URL、host、port、elapsed、エラークラス/メッセージ)、Step IDトランザクションプロファイルでの呼び出し識別およびHTTPレベル情報表示
#LlmCallLogログモデル、プロバイダ、トークン、コスト、成功可否、メッセージ内容プロンプト原本復元およびLLMレベルメタデータ表示

2つのデータはStep IDを基準に連結されます。

メッセージチャンク組み立て

LLMプロンプトと応答は長くなる場合があるため、サーバーで複数のチャンク(chunk)に分割して収集されます。Drawerはchunk_indexフィールドを基準にチャンクを正しい順序で組み立て、完全なメッセージを復元します。タイプ当たり最大100個のチャンクまでサポートします。