如何使用 New Relic 跟踪 Parse Server 的类名?
Posted
技术标签:
【中文标题】如何使用 New Relic 跟踪 Parse Server 的类名?【英文标题】:How to track class names of Parse Server with New Relic? 【发布时间】:2020-06-06 21:04:40 【问题描述】:添加 New Relic APM 跟踪 Parse Server 时,对 Cloud Code 函数和 Classes 的调用显示为:
/parse/classes/:className
/parse/functions/:functionName
相反,我想将它们显示为:
/parse/classes/myClass
/parse/functions/myFunction
对于云代码函数调用,我可以设置事务名称:
Parse.Cloud.define("myFunction", async(request) =>
newrelic.setTransactionName("myFunction");
//...
);
但是我怎样才能跟踪对类的所有调用的名称呢?
【问题讨论】:
【参考方案1】:New Relic Node.js 代理对无法关闭的事务具有自动命名功能*。
来自docs:
关于 New Relic 对 Express、Restify 或 Hapi 的支持,唯一需要了解的是,如果您对它提出的名称不满意,您可以使用下面描述的 API 调用提出更具描述性的名称.
因此解决方案是通过向newrelic.js
添加自定义名称规则来覆盖这些默认名称规则。诀窍是使用正则表达式组替换作为名称。
rules:
name: [
// post /parse/classes/:classeName
// get /parse/classes/:classeName/:objectId
pattern: '^(\/parse\/classes\/[_0-9A-Za-z]*)(\/.*)*',
name: '\\1'
,
// post /parse/functions/:functionName
pattern: '^(\/parse\/functions\/.*)$',
name: '\\1'
,
// post /parse/files/:filename
// get /parse/files/:appId/:filename
pattern: '^(\/parse\/files)\/.*$',
name: '\\1'
]
上述模式按类名对调用进行分组,忽略有时附加的对象 ID。这也使得无需为每个 Cloud Code 函数添加 setTransactionName
。
*Java 代理可以关闭,但 Node.js 代理似乎不存在该选项。
【讨论】:
以上是关于如何使用 New Relic 跟踪 Parse Server 的类名?的主要内容,如果未能解决你的问题,请参考以下文章