このドキュメントでは、トレーススパンの保存形式について説明します。データの形式は、OpenTelemetry プロトコルで定義された proto ファイルと概ね一致しています。 ただし、フィールドは保存前に OpenTelemetry 固有のデータ型から JSON データ型に変換されることがあります。
Telemetry API は OpenTelemetry プロトコルを使用します。このプロトコルは、trace_service.proto
と trace.proto ファイルに依存しています。フィールドの制限については、Telemetry API の制限をご覧ください。
Cloud Trace API は OpenTelemetry OTLP プロトコルを使用せず、独自のデータ形式を定義します。この API を介して Google Cloud プロジェクトに送信されたトレースデータは、このドキュメントで説明されている形式に変換されます。ただし、Cloud Trace API の制限が適用されます。
スパンの保存形式
| フィールド | 説明 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
trace_id |
トレースのグローバル一意識別子。
この識別子は、16 バイトの
16 進文字列としてフォーマットされた 128 ビットの数値です。例:
数値 0 は無効です。
|
||||||||||||||||
span_id |
必須。スパンの ID
。
トレース内で一意にする必要があります。
この識別子は、8 バイトの 16 進文字列としてフォーマットされた 64 ビットの数値です。
例: 数値 0 は無効です。 |
||||||||||||||||
trace_state |
このフィールドは、
OpenTelemetry ライブラリは、スパンを生成するときに
|
||||||||||||||||
parent_span_id |
省略可。このスパンを呼び出したオペレーションを特定します。 「ルート」スパンには null に設定されている親スパン ID があります。 スパン間の親子関係は、可視化 ツールでツリー構造を作成するために使用されます。 |
||||||||||||||||
name |
必須。実行されたオペレーションの名前。 名前には、メソッド名やその他の呼び出しサイト名を使用できます。 同じ実行可能ファイルとエンドポイントで一貫した名前を使用すると、クロス トレース スパンを関連付けやすくなります。 ベスト プラクティスについては、 スパンに名前を付ける方法をご覧ください。 スパン名はサニタイズされ、 Google Cloud コンソールに表示されます。 |
||||||||||||||||
kind |
オペレーションが実行されたシステム内の場所を指定します。 この値は、OpenTelemetry: Span Kind 列挙型に対応しています。
|
||||||||||||||||
start_time |
必須。スパンの開始時刻(ナノ秒単位)。 |
||||||||||||||||
start_time_unix_nano |
UNIX エポックからの経過時間での開始時刻(ナノ秒単位)。 |
||||||||||||||||
end_time |
必須。スパンの終了時刻(ナノ秒単位)。 |
||||||||||||||||
end_time_unix_nano |
UNIX エポックからの経過時間での終了時刻(ナノ秒単位)。 |
||||||||||||||||
receive_time |
必須。スパンの受信時刻(ナノ秒単位)。 |
||||||||||||||||
receive_time_unix_nano |
UNIX エポックからの経過時間での終了時刻(ナノ秒単位)。 |
||||||||||||||||
duration_unix_nano |
期間(ナノ秒単位)。 |
||||||||||||||||
attributes |
各属性は Key-Value ペアです。 使用できる属性はトレースデータによって異なります。属性の構造は OpenTelemetry 標準に準拠しています。詳細については、OpenTelemetry: Attributes をご覧ください。 OpenTelemetry は、属性のセマンティック規約を指定します。これらの規約については、トレースのセマンティック規約をご覧ください。 属性の例を次に示します。 "yourcompany.your.own.key": "your own value" "network.protocol.name": "http" "network.protocol.version": "1.1" "http.response.status_code": "200" "network.peer.address": "REDACTED" |
||||||||||||||||
dropped_attributes_count |
破棄された属性の数。 属性は、キーが長すぎるか、属性が多すぎるために破棄されることがあります。この値が 0 の場合、属性は破棄されませんでした。 この値は、クライアントサイドの計測またはアプリケーションによって設定される場合があります。この値はサーバーによって増やすことができます。 |
||||||||||||||||
events |
特定の時点のイベント。各イベントには次のフィールドが含まれます。
|
||||||||||||||||
dropped_events_count |
破棄されたイベントの数。イベントが多すぎるために破棄されることがあります この値が 0 の場合、イベントは破棄されませんでした。 |
||||||||||||||||
links |
スパンに関連付けられたリンク。リンクは、このスパン から同じトレースまたは別のトレース内の別のスパンへの参照です。 リンクは、1 つのトレースのスパンを別のトレースのスパンに関連付けるメカニズムを提供します。 たとえば、1 つのオペレーションによって 非同期オペレーションが発生するとします。このシナリオでは、元のオペレーションと非同期オペレーションの 2 つの トレースがあります。リンクを使用して、これらのトレースのスパンを関連付けることができます。 各リンクには次のフィールドが含まれます。
|
||||||||||||||||
dropped_links_count |
破棄されたリンクの数。リンクが多すぎるために破棄されることがあります。 この値が 0 の場合、リンクは破棄されませんでした。 |
||||||||||||||||
status |
このフィールドには、スパンの完了ステータスが記録されます。
|
||||||||||||||||
resource |
このフィールドは、テレメトリーが収集されたインフラストラクチャまたはホスティング システム、またはテレメトリーに関するインフラストラクチャまたはホスティング システムを識別します。たとえば、 Google Kubernetes Engine で実行されているアプリケーションについて考えてみましょう。このリソースの属性 には、プロセス名や名前空間などがあります。 このフィールドには次のサブフィールドが含まれます。
詳細については、OpenTelemetry: Resources をご覧ください。 |
||||||||||||||||
instrumentation_scope |
このフィールドは、テレメトリーを収集する指定された たとえば、アプリケーション「checkout-service」が Cloud Run にデプロイされている場合、
「WritePaymentInfoToStripe」などのクライアント スパンは、「checkout-service」という名前の Cloud Run サービス内にある「payment-processor-library」によって報告されるスパンです。 このフィールドには次のサブフィールドが含まれます。
詳細については、 OpenTelemetry: Instrumentation scope をご覧ください。 |
||||||||||||||||
resource_schema_link |
これらのフィールドは、文字列としてフォーマットされた URL である必要があります。 これらのフィールドには、リソースのスキーマ ファイルを返す URL が含まれています。 スキーマ ファイルとデータの形式は OpenTelemetry によって定義されます。詳細については、OpenTelemetry: Schemas をご覧ください。 これらのフィールドは、Telemetry API を使用する場合にのみ設定できます。 この API は、データが宣言された スキーマに準拠していることを検証しません。 |
||||||||||||||||
scope_schema_link |
これらのフィールドは、文字列としてフォーマットされた URL である必要があります。 これらのフィールドには、スコープのスキーマ ファイルを返す URL が含まれています。 スキーマ ファイルとデータの形式は OpenTelemetry によって定義されます。詳細については、OpenTelemetry: Schemas をご覧ください。 これらのフィールドは、Telemetry API を使用する場合にのみ設定できます。 この API は、データが宣言された スキーマに準拠していることを検証しません。 |
||||||||||||||||
apphub |
アプリケーション固有のラベルは、App Hub アプリケーションによってトレーススパンが生成されるときに使用できます。これらのアプリケーションは、サポートされているインフラストラクチャで実行されるか、計測されています。アプリケーション モニタリングの詳細と、これらのラベルが使用できるタイミングについては、 アプリケーション モニタリングの概要をご覧ください。 このフィールドには、
|