この記事は英語の原文を日本語に翻訳したものです。原文: https://opentelemetry.io/docs/specs/semconv/db/mongodb/
翻訳元: open-telemetry/semantic-conventions v1.44.0(コミット e10a930)
MongoDBクライアント操作に関するセマンティック規約
ステータス: Development
MongoDB に関するセマンティック規約は、データベースのセマンティック規約を拡張し、上書きします。
Spans
Status:
MongoDBへの呼び出しを表すスパンは、データベースクライアントのスパンに関する全般的なセマンティック規約に従います。
db.system.name は "mongodb" に設定しなければならず(MUST)、スパン作成時に提供すべきです(SHOULD)。
スパン名は、全般的なデータベースのスパン名に関する規約に従うべきです(SHOULD)。
スパン種別は CLIENT にすべきです(SHOULD)。
スパンステータスは、エラーの記録の文書に従うべきです(SHOULD)。
Attributes:
| Key | Stability | Requirement Level | Value Type | Description | Example Values |
|---|---|---|---|---|---|
db.collection.name | Required | string | db.namespace に示されたデータベース内でアクセスされているMongoDBのコレクション。 [1] | public.users; customers | |
db.operation.name | Required | string | 実行されているMongoDBコマンドの名前。 | findAndModify; getMore; insertMany; bulkWrite | |
db.namespace | Conditionally Required If available. | string | MongoDBのデータベース名。 | customers; test.users | |
db.response.status_code | Conditionally Required [2] | string | 文字列として表現された、MongoDBのエラーコード。 [3] | 36; 11602 | |
error.type | Conditionally Required If and only if the operation failed. | string | 操作が終了した際のエラーのクラスを記述する。 [4] | timeout; java.net.UnknownHostException; server_certificate_invalid; 500 | |
server.port | Conditionally Required [5] | int | サーバーのポート番号。 [6] | 80; 8080; 443 | |
db.operation.batch.size | Recommended | int | バッチ操作に含まれるデータベース操作の数。 [7] | 2; 3; 4 | |
server.address | Recommended | string | データベースホストの名前。 [8] | example.com; 10.1.2.80; /tmp/my.sock |
[1] db.collection.name: 値は、大文字小文字の正規化を試みずに、アプリケーションから提供されたとおりに取得することが推奨されます(RECOMMENDED)。
バッチ操作については、個々の操作が同じコレクション名を持つことがわかっている場合、そのコレクション名を使用すべきです(SHOULD)。
[2] db.response.status_code: 操作が失敗し、エラーコードが利用可能な場合。
[3] db.response.status_code: すべてのMongoDBのエラーコードはエラーとみなすべきです(SHOULD)。
[4] error.type: error.type は、データベースまたはクライアントライブラリによって返された db.response.status_code、または発生した例外の正式名称と一致すべきです(SHOULD)。
正式な例外型名を使用する場合、計装は最も関連性の高い型を報告するよう最善を尽くすべきです(SHOULD)。たとえば、元の例外が汎用的な例外にラップされている場合、元の例外を優先すべきです(SHOULD)。
計装は、error.type がどのように設定されるかを文書化すべきです(SHOULD)。
[5] server.port: このDBMSのデフォルトポート以外のポートを使用しており、かつ server.address が設定されている場合。
[6] server.port: クライアント側から観測され、かつ中間者を介して通信している場合、server.port は、利用可能であれば、あらゆる中間者(たとえばプロキシ)の背後にあるサーバーポートを表すべきです(SHOULD)。
[7] db.operation.batch.size: 以下に説明する空のバッチリクエストを除き、バッチ操作は、単一のクライアント呼び出し、プロトコルメッセージ、またはデータベースコマンドの中で、個別の操作として明示的に送信された2つ以上のデータベース操作を含みます。
1つの操作のみを含むバッチAPIへのリクエストは、バッチ操作としてではなく、単一の操作としてモデル化すべきです(SHOULD)。
1つの操作が複数のオペランド(キー、行、ドキュメント、点、その他のデータ要素など。複数のキーを持つRedisのMGETを含む)を受け付けるという理由だけでは、データベース呼び出しはバッチ操作にはなりません。
同じパラメータ化された操作をパラメータセットとともに実行するバッチAPIでは、各パラメータセットが、リクエストがバッチ操作であるかどうかを判定するための1つのデータベース操作を表します。パラメータセットが1つだけのリクエストは、バッチ操作としてではなく、単一の操作としてモデル化すべきです(SHOULD)。
db.operation.batch.size は、バッチ内の操作数に設定すべきです(SHOULD)。非バッチ操作に対しては設定すべきではありません(SHOULD NOT)。
操作を含まないバッチ操作を実行するリクエストもバッチ操作として扱うべきであり(SHOULD)、db.operation.batch.size は 0 に設定すべきです(SHOULD)。
[8] server.address: クライアント側から観測され、かつ中間者を介して通信している場合、server.address は、利用可能であれば、あらゆる中間者の背後にあるサーバーアドレスを表すべきです(SHOULD)。
以下の属性は、サンプリングの判断を行う上で重要な場合があり、スパン作成時に(提供する場合は)提供すべきです(SHOULD)。
error.type には、以下の既知の値の一覧があります。これらのいずれかが該当する場合、対応する値を使用しなければなりません(MUST)。それ以外の場合は、独自の値を使用してもかまいません(MAY)。
| Value | Description | Stability |
|---|---|---|
_OTHER | 計装が独自の値を定義していない場合に使用するフォールバックのエラー値。 |
Example
| Key | Value |
|---|---|
| Span name | "findAndModify products" |
db.system.name | "mongodb" |
server.address | "mongodb0.example.com" |
server.port | 27017 |
db.collection.name | "products" |
db.namespace | "shopDb" |
db.query.text | 設定なし |
db.operation.name | "findAndModify" |
Metrics
MongoDBクライアントの計装は、全般的なデータベースクライアントのメトリクスに関するセマンティック規約に従ってメトリクスを収集すべきです(SHOULD)。
db.system.name は "mongodb" に設定しなければなりません(MUST)。