7. 可观测性

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

7.1. 服务器请求检测

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 将为"SUCCESS"如果已发送有效的 GraphQL 响应,"REQUEST_ERROR"如果无法解析请求,或者"INTERNAL_ERROR"如果无法生成有效的 GraphQL 响应。spring-doc.cadn.net.cn

表 2.高基数键

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

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

7.2. 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

表 3.低基数键

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

表 4.高基数键

名字spring-doc.cadn.net.cn

描述spring-doc.cadn.net.cn

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

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