可观察性
使用 Micrometer 的可观察性支持 在 Spring for GraphQL 中直接进行检测。这使得 GraphQL 请求和“非平凡”数据获取操作的指标和跟踪都成为可能。由于 GraphQL 引擎在传输层之上运行,因此您还应预期来自传输的观测结果(如果在 Spring Framework 中受支持)。
只有在应用程序中配置了 ObservationRegistry
时,才会发布观测结果。您可以详细了解在 Spring Boot 中配置可观察性基础设施。如果您想自定义使用 GraphQL 观测结果生成的元数据,则可以直接在检测上配置自定义约定。如果您的应用程序使用 Spring Boot,则首选方法是将自定义约定作为 bean 贡献。
服务器请求检测
GraphQL 服务器请求观测结果使用名称 "graphql.request"
创建,适用于传统和 Reactive 应用程序以及所有支持的传输。此检测假定任何父观测结果都必须使用众所周知的 "micrometer.observation"
键在 GraphQL 上下文中设置为当前观测结果。对于跨网络边界的跟踪传播,传输级别的单独检测必须负责。在 HTTP 的情况下,Spring Framework 具有专门的检测来处理跟踪传播。
应用程序需要在其应用程序中配置 org.springframework.graphql.observation.GraphQlObservationInstrumentation
检测。它默认使用 org.springframework.graphql.observation.DefaultExecutionRequestObservationConvention
,由 ExecutionRequestObservationContext
支持。
默认情况下,会创建以下 KeyValues
名称 |
描述 |
|
GraphQL 操作名称。 |
|
GraphQL 请求的结果。 |
graphql.operation
KeyValue 将使用提供的查询的自定义名称,或者操作的标准名称(如果不存在)("query"
、"mutation"
或 "subscription"
)。graphql.outcome
KeyValue 将为
-
如果已发送有效的 GraphQL 响应并且不包含任何错误,则为
"SUCCESS"
-
如果无法解析请求,或者响应包含错误(其中没有一个类型为
org.springframework.graphql.execution.ErrorType.INTERNAL_ERROR
),则为"REQUEST_ERROR"
-
如果无法生成有效的 GraphQL 响应,或者响应至少包含一个类型为
org.springframework.graphql.execution.ErrorType.INTERNAL_ERROR
的错误,则为"INTERNAL_ERROR"
名称 |
描述 |
|
GraphQL 请求的 |
Spring for GraphQL 还为服务器请求观测结果贡献事件。Micrometer 观测事件 通常在跟踪中作为跨度注释处理。此检测将 GraphQL 响应中列出的错误记录为事件。
名称 |
上下文名称 |
GraphQL 错误类型,例如 |
完整的 GraphQL 错误消息,例如 |
DataFetcher 检测
GraphQL DataFetcher 观测结果使用名称 "graphql.datafetcher"
创建,仅适用于被视为“非平凡”的数据获取操作(Java 对象上的属性获取是平凡操作)。应用程序需要在其应用程序中配置 org.springframework.graphql.observation.GraphQlObservationInstrumentation
检测。它默认使用 org.springframework.graphql.observation.DefaultDataFetcherObservationConvention
,由 DataFetcherObservationContext
支持。
默认情况下,会创建以下 KeyValues
名称 |
描述 |
|
数据获取错误的类名 |
|
正在获取的字段的名称。 |
|
GraphQL 数据获取操作的结果,“SUCCESS”或“ERROR”。 |
名称 |
描述 |
|
正在获取的字段的路径(例如,“/bookById”)。 |