トレース
概要
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。 |
| スパン属性 | ルートスパンのスパン属性。 |
| リソース属性 | ルートスパンのリソース属性。 |
| 期間 | トレースの期間。灰色のバーは、他のトレースと比較した期間を示します。 |
トレースパネル
トレースリストでトレースをクリックすると、トレースパネルが開き、トレースのすべてのスパンがタイムラインに表示されます。実行された操作、その順序、および各操作にかかった時間を確認できます。

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

属性でフィルターするには、属性キーを入力し、演算子を選択して、属性値を入力します。
次の演算子がサポートされています。
- Contains - (デフォルト) 属性値に入力した文字列が含まれます。
- Equals - 属性値が入力した文字列と一致します。
- Does not contain - 属性値に入力した文字列が含まれません。
- Does not equal - 属性値が入力した文字列と一致しません。
- Exists - 入力したキーを持つ属性が存在します。
- Does not exist - 入力したキーを持つ属性が存在しません。
複数の条件を追加する場合は、条件の評価方法を選択します。
- And/Or - (デフォルト) すべての条件を満たす必要があります。同じ属性キーを持つ条件は Or で結合されます。
- Or - 少なくとも1つの条件を満たす必要があります。