可观察性

Micrometer 的可观测性支持直接在 Spring for GraphQL 中进行检测。 这将为 GraphQL 请求和“重要”数据获取作启用指标和跟踪。 由于 GraphQL 引擎在传输层上运行,因此如果 Spring Framework 支持,您还应该期望从传输中获得观察结果。spring-doc.cadn.net.cn

仅当ObservationRegistry在应用程序中配置。 您可以了解有关在 Spring Boot 中配置可观测性基础设施的更多信息。 如果要自定义使用 GraphQL 观察生成的元数据,可以直接在插桩上配置自定义约定。 如果您的应用程序正在使用 Spring Boot,则将自定义约定作为 bean 提供是首选方法。spring-doc.cadn.net.cn

服务器请求检测

GraphQL 服务器请求观察是使用名称"graphql.request"适用于传统和响应式应用,尤其是支持的传输。 此插桩假定任何父观测都必须在 GraphQL 上下文中设置为当前父观测,并且具有众所周知的"micrometer.observation"钥匙。 对于跨网络边界的跟踪传播,必须负责传输级别的单独检测。 对于 HTTP,Spring Framework 具有专门的 instrumentation 来处理跟踪传播spring-doc.cadn.net.cn

应用程序需要配置org.springframework.graphql.observation.GraphQlObservationInstrumentation检测。 它使用org.springframework.graphql.observation.DefaultExecutionRequestObservationConvention默认情况下,由ExecutionRequestObservationContext.spring-doc.cadn.net.cn

默认情况下,将创建以下 KeyValue:spring-doc.cadn.net.cn

表 1.低基数键

graphql.operation (必填)spring-doc.cadn.net.cn

GraphQL作名称。spring-doc.cadn.net.cn

graphql.outcome (必填)spring-doc.cadn.net.cn

GraphQL 请求的结果。spring-doc.cadn.net.cn

graphql.operationKeyValue 将使用所提供查询的自定义名称,如果没有 ("query","mutation""subscription"). 这graphql.outcomeKeyValue 将为:spring-doc.cadn.net.cn

  • "SUCCESS"如果已发送有效的 GraphQL 响应并且不包含任何错误spring-doc.cadn.net.cn

  • "REQUEST_ERROR"如果无法解析请求,或者响应包含错误(它们都不是org.springframework.graphql.execution.ErrorType.INTERNAL_ERROR)spring-doc.cadn.net.cn

  • "INTERNAL_ERROR"无法生成有效的 GraphQL 响应,或者响应包含至少一个org.springframework.graphql.execution.ErrorType.INTERNAL_ERRORspring-doc.cadn.net.cn

表 2.高基数键

graphql.execution.id (必填)spring-doc.cadn.net.cn

graphql.execution.ExecutionId的 GraphQL 请求。spring-doc.cadn.net.cn

Spring for GraphQL 还为服务器请求观察提供了 Events。Micrometer Observation Event 通常作为 trace 中的 span annotation 处理。 此检测将 GraphQL 响应中列出的错误记录为事件。spring-doc.cadn.net.cn

表 3.观察事件

上下文名称spring-doc.cadn.net.cn

GraphQL 错误类型,例如InvalidSyntaxspring-doc.cadn.net.cn

完整的 GraphQL 错误消息,例如"Invalid syntax with offending token 'invalid'…​"spring-doc.cadn.net.cn

DataFetcher 插桩

GraphQL DataFetcher 观察是使用名称"graphql.datafetcher",仅适用于被视为“非平凡”的数据获取作(对 Java 对象进行属性获取是一项简单的作)。 应用程序需要配置org.springframework.graphql.observation.GraphQlObservationInstrumentation检测。 它使用org.springframework.graphql.observation.DefaultDataFetcherObservationConvention默认情况下,由DataFetcherObservationContext.spring-doc.cadn.net.cn

默认情况下,将创建以下 KeyValue:spring-doc.cadn.net.cn

表 4.低基数键

graphql.error.type (必填)spring-doc.cadn.net.cn

数据获取错误的类名spring-doc.cadn.net.cn

graphql.field.name (必填)spring-doc.cadn.net.cn

正在获取的字段的名称。spring-doc.cadn.net.cn

graphql.outcome (必填)spring-doc.cadn.net.cn

GraphQL 数据获取作的结果,“SUCCESS”或“ERROR”。spring-doc.cadn.net.cn

表 5.高基数键

名字spring-doc.cadn.net.cn

描述spring-doc.cadn.net.cn

graphql.field.path (必填)spring-doc.cadn.net.cn

要获取的字段的路径(例如,“/bookById”)。spring-doc.cadn.net.cn