MongoDB 客户端操作的语义约定
状态: 开发中
MongoDB 的语义约定扩展并覆盖了数据库语义约定。
Span
状态:
表示 MongoDB 调用的 Span 应遵循通用的数据库客户端 Span 的语义约定。
db.system.name 必须设置为 "mongodb",并且应在跨度创建时提供。Span 名称应遵循通用的数据库 Span 名称约定
**Span 类型**应为 CLIENT。
**Span 状态**应遵循 记录错误文档。
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
db.collection.name | 必需 | 字符串 | 在 db.namespace 指定的数据库中访问的 MongoDB 集合。[1] | public.users; customers | |
db.operation.name | 必需 | 字符串 | 正在执行的MongoDB 命令的名称。 | findAndModify;getMore;insertMany;bulkWrite | |
db.namespace | 有条件必需 如果可用。 | 字符串 | MongoDB 数据库名称。 | customers; test.users | |
db.response.status_code | 有条件地必需 [2] | 字符串 | 以字符串形式表示的MongoDB 错误代码。[3] | 36; 11602 | |
error.type | 有条件必需 仅在操作失败时。 | 字符串 | 描述操作结束时的一类错误。[4] | timeout;java.net.UnknownHostException;server_certificate_invalid;500 | |
server.port | 有条件地必需 [5] | int | 服务器端口号。[6] | 80; 8080; 443 | |
db.operation.batch.size | 推荐 | int | 批处理操作中包含的查询数量。[7] | 2; 3; 4 | |
server.address | 推荐 | 字符串 | 数据库主机的名称。[8] | example.com;10.1.2.80;/tmp/my.sock |
[1] db.collection.name: 建议捕获应用程序提供的原始值,而不尝试进行任何大小写规范化。对于批处理操作,如果已知单个操作具有相同的集合名称,则应使用该集合名称。
[2] db.response.status_code: 如果操作失败并且错误代码可用。
[3] db.response.status_code: 所有 MongoDB 错误代码都应被视为错误。
[4] error.type: error.type 应与数据库或客户端库返回的 db.response.status_code 或发生的异常的规范名称匹配。在使用规范的异常类型名称时,仪器化应尽最大努力报告最相关的类型。例如,如果原始异常被包装在通用异常中,则应优先选择原始异常。仪器化应记录 error.type 的填充方式。
[5] server.port: 如果使用的是非默认端口,并且设置了 server.address。
[6] server.port: 从客户端观察时,并且在通过中介进行通信时,server.port 应表示任何中介(例如代理)后面的服务器端口,如果可用。
[7] db.operation.batch.size: 仅当操作包含两个或多个操作时,才将其视为批处理,因此 db.operation.batch.size 永远不应为 1。
[8] server.address: 从客户端观察时,并且在通过中介进行通信时,server.address 应表示任何中介(例如代理)后面的服务器地址,如果可用。
以下属性对于做出采样决策可能很重要,并且应在跨度创建时提供(如果提供的话)
error.type 具有以下已知值列表。如果其中一个适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
_OTHER | 当检测不到自定义值时使用的回退错误值。 |
示例
| 键 | 值 |
|---|---|
| Span 名称 | "findAndModify products" |
db.system.name | "mongodb" |
server.address | "mongodb0.example.com" |
server.port | 27017 |
network.peer.address | "192.0.2.14" |
network.peer.port | 27017 |
network.transport | "tcp" |
db.collection.name | "products" |
db.namespace | "shopDb" |
db.query.text | 未设置 |
db.operation.name | "findAndModify" |
指标
MongoDB 客户端仪器化应根据通用的数据库客户端指标语义约定收集指标。
db.system.name 必须设置为 "mongodb"。