对于最新的稳定版本,请使用Spring GraphQL 2.0.2spring-doc.cadn.net.cn

可观测性

Observability support with Micrometer 是直接集成在 Spring for GraphQL 中的。这使得您可以为 GraphQL 请求和“非平凡”的数据获取操作获得指标和跟踪。 由于 GraphQL 引擎是基于传输层运行的,因此如果您使用的 Spring 框架支持该传输层观察,则还应 期望从传输层得到观察spring-doc.cadn.net.cn

观察结果仅在应用程序中配置了ObservationRegistry时发布。 您可以在Spring Boot 中了解有关配置可观测性基础设施的更多信息。 如果您希望自定义与GraphQL观测结果一起生成的元数据,可以直接在仪器化上配置一个自定义惯例如果您的应用程序使用了Spring Boot,则将自定义惯例作为bean贡献是首选方式。spring-doc.cadn.net.cn

服务器请求监控

GraphQL Server Requests 观测是在传统和Reactive应用程序以及所有支持的传输方式中以名称 "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.type (必填)spring-doc.cadn.net.cn

GraphQL 操作类型。spring-doc.cadn.net.cn

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

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

The graphql.operation.type KeyValue 将使用 操作的标准名称 ("query", "mutation""subscription"),或者如果请求文档无法解析,则使用 "operation"spring-doc.cadn.net.cn

The graphql.outcome KeyValue 将会是:spring-doc.cadn.net.cn

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

  • "REQUEST_ERROR" 如果请求无法解析,或者响应包含错误(其中 none 不存在类型为 org.springframework.graphql.execution.ErrorType.INTERNAL_ERROR 的错误)spring-doc.cadn.net.cn

  • "INTERNAL_ERROR" 如果无法生成有效的GraphQL响应,或响应中包含至少一个类型为org.springframework.graphql.execution.ErrorType.INTERNAL_ERROR的错误,则返回此值。spring-doc.cadn.net.cn

表2. 高基数键

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

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

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

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

The graphql.operation.name KeyValue 将与 graphql.operation.name 类似,将使用由客户端提供的操作名称。spring-doc.cadn.net.cn

Spring for GraphQL 还贡献了事件用于服务器请求观察。 Micrometer 观察事件通常作为跟踪中的跨度注解进行处理。 这些 instrumentation 记录了 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

DataLoader 性能监控

GraphQL DataLoader 观察点是以名称 "graphql.dataloader" 创建的,观察对 @BatchMapping 控制器方法的调用和手动注册的 DataLoader 实例。 应用程序需要在其应用中配置 org.springframework.graphql.observation.GraphQlObservationInstrumentation 仪器化。 默认情况下,它使用的是 org.springframework.graphql.observation.DefaultDataLoaderObservationConvention,由 DataLoaderObservationContext 支持。spring-doc.cadn.net.cn

默认情况下,以下KeyValues会被创建:spring-doc.cadn.net.cn

表6. 低基数键

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

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

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

正在使用的DataLoader名称。spring-doc.cadn.net.cn

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

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

表7. 高基数键

姓名spring-doc.cadn.net.cn

描述spring-doc.cadn.net.cn

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

加载元素列表的大小。spring-doc.cadn.net.cn