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