スパンタグのセマンティクス

概要

Datadog トレーシングライブラリは、様々なライブラリのインスツルメンテーションをすぐに利用できるようサポートしています。 これらのインスツルメンテーションは、分散システムにおける作業の論理的な単位を表すスパンを生成します。 各スパンはスパンタグで構成され、システムで発生している作業単位に関する追加情報を提供します。命名規則では、スパンイベントで使用できる名前と内容を記述しています。

スパンタグの命名規則

コア

以下のスパンタグは、使用するインスツルメンテーションと実行する操作の種類を記述するための核となる概念です。

名前説明
languagestringスパンを生成するために使用されるクライアント SDK の言語。cppdotnetgojvmjavascriptphppythonruby のいずれかになります。
envstring実行中のプロセスの DD_ENV 環境変数、またはユーザー定義の env の値。
versionstring実行中のプロセスの DD_VERSION 環境変数、またはユーザー定義の version の値。
span.kindstringスパンが扱う作業単位の種類を表す文字列。serverclientproducerconsumerinternal のいずれかとなります。
詳細は OpenTelemetry SpanKind ドキュメントを参照してください。
componentstringスパンを作成したライブラリ/インテグレーションの名前。

ネットワーク通信

ネットワーク通信に対応する作業単位を記述するために、以下のスパンタグを使用することができます。

名前説明
network.client.ipstringインバウンド接続を開始したクライアントの IP アドレス。
network.destination.ipstringアウトバウンド接続が行われる IP アドレス。
network.host.ipstringローカルホストの IP アドレス。
network.client.portnumber接続を開始したクライアントのポート。
network.destination.portnumberアウトバウンド接続のリモートポート番号。
network.client.namestringインバウンド接続を開始したクライアントのホスト名。
network.destination.namestringアウトバウンド接続が行われるリモートホスト名またはそれに類するもの。
network.host.namestringローカルホスト名。
network.client.transportstringインバウンド接続に使用されるトランスポートプロトコル。
network.destination.transportstringアウトバウンド接続に使用されるトランスポートプロトコル。

HTTP リクエスト

HTTP クライアントとサーバーのスパンを記述するために、以下のスパンタグを使用することができます。

名前説明
http.status_codeタイプ: string
HTTP 応答ステータスコード。
http.urlタイプ: string
難読化されたクエリ文字列を含む、HTTP リクエストの URL。難読化の詳細については、データセキュリティの構成を参照してください。
http.versionタイプ: string
リクエストに使用された HTTP のバージョン。
http.methodタイプ: string
接続を開始したクライアントのポート。
http.routeタイプ: string
一致したルート (パステンプレート)。
例: /users/:userID
http.client_ipタイプ: string
すべてのプロキシの背後にある元のクライアントの IP アドレス (既知の場合)。X-Forwarded-For のようなヘッダーから発見される。
http.useragentタイプ: string
リクエストとともに受け取ったユーザーエージェントヘッダー。
http.request.content_lengthタイプ: number
リクエストペイロード本文のサイズ (バイト単位)。
http.response.content_lengthタイプ: number
レスポンスペイロード本文のサイズ (バイト単位)。
http.request.content_length_uncompressedタイプ: number
トランスポートデコード後の圧縮されていないリクエストペイロード本文のサイズ。
http.response.content_length_uncompressedタイプ: number
トランスポートデコード後の圧縮されていないレスポンスペイロード本文のサイズ。
http.request.headers.*タイプ: string
リクエストの HTTP ヘッダー。デフォルトでは何も収集されませんが、オプションで DD_TRACE_HEADER_TAGS を使って構成することができます。
ヘッダーの収集方法については、該当するライブラリの構成を参照してください。
http.response.headers.*タイプ: string
レスポンスの HTTP ヘッダー。デフォルトでは何も収集されませんが、オプションで DD_TRACE_HEADER_TAGS を使って構成することができます。
ヘッダーの収集方法については、該当するライブラリの構成を参照してください。

データベース

データベースのスパンを記述するために、以下のスパンタグを使用することができます。

名前説明
db.systemstringデータベース管理システム (使用している DBMS 製品) を表す識別子。
db.connection_stringstringデータベースへの接続に使用する接続文字列。
db.userstringデータベースにアクセスしたユーザー名
db.instancestring接続中のデータベースの名前。
db.statementstring実行中のデータベースステートメント。
db.operationstring実行中の操作の名前。
例: SELECTfindAndModifyHMSET
db.sql.tablenumberデータベース名 (該当する場合) を含む、操作の対象となる主テーブルの名前。
db.row_countnumberクエリまたは操作の行数/結果数。

特定のデータベース技術に関する追加の属性は、接頭辞 db.<db.system> を使用します。

メッセージキュー

メッセージングシステムに対応するスパンを記述するために、以下のスパンタグを使用することができます。

名前説明
messaging.systemstringメッセージングシステムの識別子。
messaging.destinationstringメッセージの宛先名。
messaging.destination_kindstringメッセージの宛先の種類。
messaging.protocolstringトランスポートプロトコルの名前。
messaging.protocol_versionstringトランスポートプロトコルのバージョン。
messaging.urlstringメッセージングシステムへの接続文字列。
messaging.message_idstringメッセージングシステムがメッセージの識別子として使用する値で、文字列として表される。
messaging.conversation_idstringメッセージが属する会話を識別する会話の ID で、文字列として表現される。
messaging.message_payload_sizenumber圧縮されていないメッセージペイロードのサイズ (バイト数)。
messaging.operationstring消費メッセージの種類を示す文字列。
例: send (プロデューサーに送るメッセージ)、receive (コンシューマーが受け取るメッセージ)、または process (以前に受け取ったメッセージをコンシューマーが処理する)。
messaging.consumer_idstringメッセージを受信するコンシューマーの識別子。

特定のメッセージングシステムのための追加属性は、プレフィックス messaging.<messaging.system> を使用します。

リモートプロシージャコール

RMI や gRPC などのリモートプロシージャコールに対応するスパンを記述するために、以下のスパンタグを使用することができます。

名前説明
rpc.systemstringリモートシステムの識別子。
rpc.servicestring呼び出されるサービスの名前。
rpc.methodstring呼び出されるメソッドの名前。

エラー

スパンに関連するエラーを記述するために、以下のスパンタグを使用することができます。

名前説明
error.typestringエラーのタイプまたは種類 (場合によってはコード)。
error.messagestringイベントについて簡潔にわかりやすく説明する 1 行メッセージ。
error.stackstringスタックトレースまたはエラーに関する補足情報。

その他の参考資料