Spring GraphQL - DataFetcher observations-missing keys

nnsrf1az  于 5个月前  发布在  Spring
关注(0)|答案(1)|浏览(50)

我正在尝试使用Sping Boot 3 Observability功能监视Sping Boot GraphQL应用程序。我设法很好地监视成功请求,现在我也在尝试收集有关GraphQl错误的一些信息。
我的应用程序具有spring-boot-actuator作为依赖项,配置了ObservedAspect,并且我正在使用@Observed annotation。就是这样,没有自定义处理程序,过滤器或其他任何可能隐藏/覆盖Spring DataFetchers的auto函数的东西。没有GraphQL错误的自定义处理,默认行为被保留。
根据Spring文档,默认情况下,他们会创建以下低基数键(https://docs.spring.io/spring-graphql/reference/observability.html):
x1c 0d1x的数据
事实上,对于一个成功的请求,我设法看到他们:



但是,在ValidationError或任何其他错误的情况下,对于调用的完全相同的操作,当我期望填充这些错误字段时,这些键完全丢失。
我试着调试应用程序,错误被很好地收集并设置在ObservationContext中:



但是在沿着的某个地方,是迷失了还是故意不展示?
我不知道发生了什么事,为什么最后没有显示出来。如果我做错了什么,或者我理解错了什么,请让我知道。
另外,使用最新的可观察性功能在Sping Boot 应用程序中监视GraphQL错误的最佳方法是什么?

hl0ma9xz

hl0ma9xz1#

An issue was created about this in the Spring for GraphQL project,我在这里总结一下结果。
这是Spring for GraphQL applications当前预期的行为。"graphql.request"观察是关于整个请求处理(许多查询和数据获取操作),而"graphql.datafetcher"观察是关于单个数据获取操作。
当处理GraphQL请求时,引擎首先通过解析和验证传入的文档来启动。如果文档无效,则响应将拒绝它并提供错误详细信息-在这种情况下没有调用数据获取器,因此没有任何数据获取器观察。
确实,当前的graphql.request"观察只提到它失败了(参见"graphql.outcome"键值),但没有说明原因。
在Spring for GraphQL中,我们现在正在考虑通过添加错误作为观察事件来改进"graphql.request"观察。这意味着:

  • 指标世界中的"graphql.request.ValidationError""graphql.request.InvalidSyntax"计数器
  • "graphql.request"跟踪上的span注解,其中包含每个错误类型的详细信息。

Spring for GraphQL 1.3.0应该考虑这一点,在此之前请随时评论以给予反馈。

相关问题