Observability
Observability support with Micrometer直接用 Spring for GraphQL 中的工具记录。这同时支持度量标准和 GraphQL 请求的跟踪以及“非平凡”数据提取操作。由于 GraphQL 引擎运行在传输层之上,你也应该 预期传输的观察结果(如果在 Spring Framework 中受支持)。 仅在应用程序中配置 `ObservationRegistry`时才会发布观察结果。你可以详细了解 配置 Spring Boot 中的可观察性基础设施。如果你想自定义与 GraphQL 观察结果一起产生的元数据,则可以直接在工具上 配置自定义惯例。如果你的应用程序正在使用 Spring Boot,则首选方式是将自定义惯例作为一个 bean 贡献出来。
Server Requests instrumentation
对于传统和反应式应用程序以及所有受支持的传输,GraphQL 服务器请求观察结果使用名称 "graphql.request"
创建。此工具假定必须在 GraphQL 上下文中使用众所周知的 "micrometer.observation"
键将任何父观察结果设置为当前观察结果。对于跨网络边界的跟踪传播,必须由传输层中的单独工具负责。在 HTTP 的情况下,Spring Framework 具有专门的工具来处理跟踪传播。
应用程序需要在其应用程序中配置 org.springframework.graphql.observation.GraphQlObservationInstrumentation
检测机制。它默认使用 org.springframework.graphql.observation.DefaultExecutionRequestObservationConvention
,由 ExecutionRequestObservationContext
支持。
默认情况下,将创建以下 KeyValues:
Name |
Description |
|
GraphQL Operation name. |
|
GraphQL 请求的结果。 |
graphql.operation
KeyValue 将使用提供的查询的自定义名称,如果没有则使用 the standard name for the operation("query"
、"mutation"
或 "subscription"
)。如果已发送有效的 GraphQL 响应,则 graphql.outcome
KeyValue 将为 "SUCCESS"
;如果无法解析请求,则为 "REQUEST_ERROR"
;如果无法生成有效的 GraphQL 响应,则为 "INTERNAL_ERROR"
。
Name |
Description |
|
GraphQL 请求的 |
Spring for GraphQL 还为服务器请求观察结果提供事件。 Micrometer Observation Events 通常作为跟踪中的跨度注释进行处理。此工具记录在 GraphQL 响应中列出的错误作为事件。
Name |
Contextual Name |
GraphQL 错误类型,例如 |
完整的 GraphQL 错误消息,例如 |
DataFetcher instrumentation
GraphQL DataFetcher 观测以名称 "graphql.datafetcher"
创建,仅用于被视为“非平凡”的数据获取操作(在 Java 对象上获取属性是平凡操作)。应用程序需要在其应用程序中配置 org.springframework.graphql.observation.GraphQlObservationInstrumentation
检测机制。它默认使用 org.springframework.graphql.observation.DefaultDataFetcherObservationConvention
,由 DataFetcherObservationContext
支持。
默认情况下,将创建以下 KeyValues:
Name |
Description |
|
数据获取错误的类名 |
|
要获取的字段的名称。 |
|
GraphQL 数据获取操作(成功或错误)的结果。 |
Name |
Description |
|
正在获取的字段的路径(例如 /bookById)。 |