OpenTelemetry 标准属性
将标准属性附加到路由遥测
OpenTelemetry 语义约定定义一组可附加到标准属性,这些属性可以附加到跨度、仪器和事件。这些属性用于在您的应用程序性能监控器(APM)中过滤和分组数据。
可用的属性取决于路由管道的服务。
例如,将标准属性http.response.status_code
设置在路由跨度上:;
router.yaml
telemetry:instrumentation:spans:router:attributes:# Standard attributeshttp.response.status_code: true
属性配置参考
一个路由器的请求生命周期有三大服务:;
- 路由器服务 - 在解析请求之前处理传入请求。在一个不可见字节的上下文中工作。
- Supergraph 服务 - 在解析请求后,在发送到子图之前处理请求。在一个 GraphQL 上下文中工作。
- 子图服务 - 在将请求发送到子图后处理请求。在一个 GraphQL 上下文中工作。
每个服务支持一组独特的标准属性。
路由器
服务router
的标准属性:
属性 | 值 | 描述 |
---|---|---|
error.type | 描述操作结束时结束的错误类型 | |
http.request.body.size | 请求有效负荷体的字节大小 | |
http.request.method | HTTP请求方法 | |
http.response.body.size | 响应体的大小(以字节为单位) | |
http.response.status_code | HTTP响应状态码 | |
network.protocol.name | OSI应用层或非OSI等效层 | |
network.protocol.version | network.protocol.name指定的协议版本 | |
network.transport | OSI传输层 | |
network.type | OSI网络层或非OSI等效层 | |
user_agent.original | 客户端发送的HTTP User-Agent头部的值 | |
http.route | 匹配的路由(使用相应服务器框架的格式表示的路径模板) | |
network.local.address | 本地socket地址。在多IP主机的情况下很有用 | |
network.local.port | 本地socket端口。在多端口主机的情况下很有用 | |
network.peer.address | 网络连接的对方地址 - IP地址或Unix域名套接字名 | |
network.peer.port | 网络连接的对方端口号 | |
server.address | 接收请求的本地HTTP服务器的名称 | |
server.port | 接收请求的本地HTTP服务器的端口 | |
url.path | URI的路径部分 | |
url.query | URI的查询部分 | |
url.scheme | URL的方案部分,例如"https"或"http" |
ⓘ 注意
http.request.header.<key>和
http.response.header.<key>属性不是标准属性,但可以通过自定义属性进行配置。
例如,要在router
标签中对x-my-header
配置属性:
router.yaml
telemetry:instrumentation:spans:router:attributes:"http.request.header.x-my-header":request_header: "x-my-header"
Supergraph
supergraph服务的标准属性:
属性 | 值 | 描述 |
---|---|---|
graphql.operation.name | 从graphql查询中获取的操作名称(需要设置为spec_compliant 模式以禁用它) | |
graphql.operation.type | 查询 |更新 |订阅 | 来自子图查询的操作类型 |
graphql.document | 对子图的GraphQL查询(需要设置为spec_compliant 模式以禁用它) |
Subgraph
subgraph服务的标准属性: