此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring GraphQL 1.4.1spring-doc.cadn.net.cn

可观察性

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 Server Requests 观察使用名称"graphql.request"适用于传统和响应式应用,尤其是受支持的传输。 此检测假定必须将任何父观察值设置为 GraphQL 上下文中的当前观察值,并具有已知的"micrometer.observation"钥匙。 对于跨网络边界的跟踪传播,必须由传输级别的单独检测负责。 对于 HTTP,Spring Framework 具有专门的检测来处理跟踪传播。spring-doc.cadn.net.cn

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

默认情况下,将创建以下 KeyValues: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.ExecutionIdGraphQL 请求的。spring-doc.cadn.net.cn

Spring for GraphQL 还为服务器请求观察贡献了事件。千分尺观测事件通常作为迹线中的跨度注释进行处理。 此检测将 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

默认情况下,将创建以下 KeyValues: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