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