7. 可观察性
Observability support with Micrometer 是直接集成在 Spring for GraphQL 中的。这使得您可以为 GraphQL 请求和“非平凡”的数据获取操作获得指标和跟踪。 由于 GraphQL 引擎是基于传输层运行的,因此如果您使用的 Spring 框架支持该传输层观察,则还应 期望从传输层得到观察。
观察结果仅在应用程序中配置了ObservationRegistry时发布。
您可以在Spring Boot 中了解有关配置可观测性基础设施的更多信息。
如果您希望自定义与GraphQL观测结果一起生成的元数据,可以直接在仪器化上配置一个自定义惯例。如果您的应用程序使用了Spring Boot,则将自定义惯例作为bean贡献是首选方式。
7.1. 服务器请求插桩
GraphQL Server Requests 观测是在传统和Reactive应用程序以及所有支持的传输方式中以名称 "graphql.request" 创建的。
这种仪表假设任何父观测必须在GraphQL上下文中使用广为人知的 "micrometer.observation" 键设置为当前观测。
对于跨网络边界跟踪传播,需要在传输级别进行单独的跟踪传播仪表。
在HTTP情况下,Spring Framework 提供专门用于处理跟踪传播的仪表。
应用程序需要在应用中配置org.springframework.graphql.observation.GraphQlObservationInstrumentation的监控。
它默认使用org.springframework.graphql.observation.DefaultExecutionRequestObservationConvention,由ExecutionRequestObservationContext支持。
默认情况下,以下KeyValues会被创建:
姓名 |
描述 |
|
GraphQL 操作名称。 |
|
GraphQL请求的结果。 |
graphql.operation KeyValue 将使用所提供查询的自定义名称,或者如果没有("query"、"mutation" 或 "subscription"),则使用该操作的标准名称。
如果已发送有效的 GraphQL 响应,graphql.outcome KeyValue 将为 "SUCCESS";如果请求无法解析,则为 "REQUEST_ERROR";如果无法生成有效的 GraphQL 响应,则为 "INTERNAL_ERROR"。
姓名 |
描述 |
|
|
7.2. DataFetcher 工具类
GraphQL DataFetcher 观察点是以名称 "graphql.datafetcher" 创建的,仅用于被视为“非平凡”的数据获取操作(对 Java 对象属性的获取是一个平凡的操作)。
应用程序需要在应用中配置 org.springframework.graphql.observation.GraphQlObservationInstrumentation 仪器化。
它默认使用 org.springframework.graphql.observation.DefaultDataFetcherObservationConvention,由 DataFetcherObservationContext 支持。
默认情况下,以下KeyValues会被创建:
姓名 |
描述 |
|
数据获取错误的类名 |
|
取回字段的名称。 |
|
GraphQL数据获取操作的结果,"SUCCESS" 或 "ERROR"。 |
姓名 |
描述 |
|
路径到正在获取的字段(例如,“/bookById”)。 |