1

我正在将 elastic-apm-node 包添加到我们的 nestjs 后端。我正在使用nestjs 的graphql 功能。因此,所有请求都像/graphql弹性一样合并在一起。

这是应该的吗?我想,既然 apollo-server-express 由 nestjs 也使用的 elastic-apm-node 支持,它应该会更好地显示它。我错过了什么吗?

更新

graphql 功能是使用 Nestjs 的文档设置的:https ://docs.nestjs.com/graphql/quick-start它基本上是我正在使用的他们推荐的设置。

4

1 回答 1

1

如果不确切知道如何一起使用 NestJS 和 GraphQL,并且不知道 NestJS 本身使用 Apollo Server 的哪些部分,很难说。查看我正在使用 nestjs 的 graphql 功能的一小部分示例会很有用。

这里有一些数据点可能会帮助您缩小范围。此外,在代理存储库中打开问题或在他们的论坛中提出问题可能会引起更多的关注。

Apollo Server 的 Elastic APM 工具通过包装模块的runHttpQuery功能来工作,并使用.apollo-server-coretrans._graphqlRoute

当代理看到这个_graphqlRoute属性时,它会运行一些代码来设置事务的默认名称。

      if (trans._graphqlRoute) {
        var name = queries.length > 0 ? queries.join(', ') : 'Unknown GraphQL query'
        if (trans.req) var path = getPathFromRequest(trans.req, true)
        var defaultName = name
        defaultName = path ? defaultName + ' (' + path + ')' : defaultName
        defaultName = operationName ? operationName + ' ' + defaultName : defaultName
        trans.setDefaultName(defaultName)
        trans.type = 'graphql'
      }

在您的应用程序中,要么_graphqlRoute属性未设置,要么上面的重命名代码做了一些奇怪的事情,或者出现了有关 NestJS 的东西,并在使用上面的代码命名事务后重命名了事务。

更具体地了解你在做什么将帮助人们缩小你的问题范围。

于 2020-10-13T05:23:52.567 回答