如何使用 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 的类名?的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 New Relic 插件以显示速率

我可以向 New Relic 发送字符串吗?

使用洞察密钥在 Spring Boot 中配置 New Relic

New Relic性能监控概览

ini New Relic Postfix插件示例配置

ini New Relic Postfix插件示例配置