トレース

概要

APM > トレース セクションには、アプリケーションおよびサービスから収集されたトレースが表示されます。

トレースは、アプリケーションおよびサービスを通過するリクエストの経路を表します。 たとえば、オンラインショップでユーザーが 注文する ボタンをクリックすると、リクエストはWebインターフェースサービスからチェックアウトサービス、決済サービスを経由して、データベースに到達します。

トレースはスパンで構成されます。 各スパンは、Webインターフェースサービスからチェックアウトサービスに送信されるHTTPリクエスト、注文を保存するデータベースクエリ、配送料を計算する関数呼び出しなど、単一の操作を表します。

スパンは階層を形成します。 ルートスパンは、リクエストの最初の操作を表します。 その他のすべてのスパンは、その操作が開始されたスパンの子スパンです。 たとえば、注文する リクエストを受信するWebインターフェースサービスがルートスパンであり、注文を処理するチェックアウトサービスがその子スパンです。

各スパンは、サービス(例: zabbix-frontend; OpenTelemetryの service.name リソース属性によって名前が付けられます)と、スパンを作成したコードの部分であるインストルメンテーションスコープ(例: HTTPリクエストをトレースするライブラリ)によって生成されます。

各操作に関するコンテキストを提供するため、スパンにはキーと値の属性もあります。スパン属性は操作自体(例: http.method: POST)を説明し、リソース属性はサービスとその実行環境(例: host.name: eabf8c2a5ddc)を説明します。

トレースの詳細については、OpenTelemetryのドキュメントを参照してください。

APM > トレース セクションには、次の要素が含まれます。

  • キオスクモードボタン - メニューとヘッダーを表示せず、ページのコンテンツのみを表示します。
  • 期間セレクター - トレースを表示する期間を選択します。
  • フィルター - 関心のあるトレースのみを表示します。
  • トレース一覧 - ルートスパンによって説明されたトレースを表示します。
  • トレースパネル - 選択したトレースのすべてのスパンをタイムライン上に表示します。

トレース一覧

トレース一覧の各行は1つのトレースを表し、各列にはそのルートスパンのデータが表示されます。

トレースはカスタマイズ可能なテーブルに表示されます。 テーブルヘッダーの テーブルをカスタマイズ ボタンを使用すると、列の表示、非表示、並べ替え、およびレイアウトのデフォルトへのリセットができます。 各列の右端をドラッグして列の幅を変更することもできます。右端をダブルクリックすると、幅がリセットされます。 すべてのカスタマイズは直ちに適用され、現在のユーザーに対して保存されます。

トレース一覧には、次の列を表示できます。

各列は、テレメトリデータソースの otel_traces テーブルの列に対応しています。列の一覧については、サポートされているテレメトリデータ列を参照してください。 ほとんどの列はデータソースと同じ名前です(例: トレースID は TraceId 列に対応します)。 名前が異なる場合は、下の表にデータソースの列名を記載しています。

列 説明
トレースID トレースに属するすべてのスパンで共有される、トレースのID。
スパンID ルートスパンのID。
トレース状態 トレースツールがトレースに付加する追加データ(存在する場合)(W3C Trace Contextを参照)。
サービス名 ルートスパンを生成したサービスと、トレース内のスパン数。
Error ステータスコード(下記参照)のスパンがある場合は、赤いアイコンにその数が表示されます。
操作名 ルートスパンが表す操作(例: POST /zabbix.php)。
データソースの列: SpanName。
スパン種別 ルートスパンの役割:
Unspecified - 指定なし。
Internal - アプリケーション内で実行された操作。
Server - 受信リクエストの処理。
Client - 送信リクエスト。
Producer - 非同期操作の作成(例: メッセージの送信)。
Consumer - 非同期操作の処理。
スコープ名 ルートスパンを生成したインストルメンテーションスコープ。
スコープバージョン インストルメンテーションスコープのバージョン。
ステータスコード ルートスパンが表す操作のステータス:
Unset - ルートスパンに明示的なステータスが割り当てられていません。
Ok - 操作が正常に完了しました。
Error - 操作がエラーで完了しました。
ステータスメッセージ ステータスに関する追加情報(存在する場合)。
開始時刻 ルートスパンが開始した日時。
データソースの列: Timestamp。
スパン属性 ルートスパンのスパン属性。
3点ボタンをクリックすると、すべての属性が表示されます。
リソース属性 ルートスパンのリソース属性。
3点ボタンをクリックすると、すべての属性が表示されます。
期間 トレースの期間。灰色のバーは、他のトレースと比較した期間を示します。

トレースパネル

トレースリストでトレースをクリックすると、トレースパネルが開き、トレースのすべてのスパンがタイムラインに表示されます。実行された操作、その順序、および各操作にかかった時間を確認できます。

トレースパネルには、次の要素が表示されます。

要素 説明
トレースID 選択したトレースのID。
トレースタイムラインの概要 最大8行に表示されたスパンを含む、トレース全体(複数のスパンが1行を共有する場合があります)。
選択範囲の境界または範囲自体をドラッグすると、トレースのその部分にスパンタイムラインをズームできます。
スパンツリー 階層構造で表示されたスパン。各スパンには、サービス(太字)、操作名、および直接の子スパン数が表示されます。
スパンタイムライン バーとして表示されたスパン。位置と長さによって、各スパンの開始時刻と所要時間が示されます。
マーカーはイベント(例: 例外)を示します。詳細を確認するには、マーカーにカーソルを合わせるか、クリックします。
スパンの詳細 スパンツリーでスパンをクリックすると、その詳細と属性が表示されます。

フィルターの使用

フィルターを使用すると、関心のあるトレースのみを表示できます。

属性でフィルターするには、属性キーを入力し、演算子を選択して、属性値を入力します。

次の演算子がサポートされています。

  • Contains - (デフォルト) 属性値に入力した文字列が含まれます。
  • Equals - 属性値が入力した文字列と一致します。
  • Does not contain - 属性値に入力した文字列が含まれません。
  • Does not equal - 属性値が入力した文字列と一致しません。
  • Exists - 入力したキーを持つ属性が存在します。
  • Does not exist - 入力したキーを持つ属性が存在しません。

複数の条件を追加する場合は、条件の評価方法を選択します。

  • And/Or - (デフォルト) すべての条件を満たす必要があります。同じ属性キーを持つ条件は Or で結合されます。
  • Or - 少なくとも1つの条件を満たす必要があります。