问题描述
我正在将elastic-apm-node软件包添加到我们的nestjs后端。我正在使用nestjs的graphql功能。因此,所有请求都以弹性的/graphql
合并在一起。
这是应该的样子吗?我以为,由于apollo-server-express受elastic-apm-node支持,而nestjs也使用它,因此它应该显示得更好。我想念什么吗?
更新
graphql功能是使用nestjs的文档设置的:https://docs.nestjs.com/graphql/quick-start基本上是我正在使用的推荐设置。
解决方法
很难确切地说出您到底是如何一起使用NestJS和GraphQL,也不知道NestJS本身使用了Apollo Server的哪些部分。看看我正在使用nestjs的graphql功能的小样会有用。
以下一些数据点可能会帮助您缩小范围。另外,在Agent信息库或an issue中打开a question in their forums可能会引起更多的注意。
用于Apollo Server的Elastic APM工具通过包装runHttpQuery
模块的apollo-server-core
函数和marking the transaction with trans._graphqlRoute
来工作。
代理sees this _graphqlRoute
property运行时,它将运行一些代码,该代码将为交易设置默认名称
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有关的事情,并在使用上面的代码命名后重新命名了事务。
更具体地了解您正在做什么将帮助人们缩小问题范围。