Nodejs 有没有什么工具能做到访问一个页面记录全链路的耗时?

发布于 1周前 作者 htzhanglong 来自 nodejs/Nestjs

有一个 next.js 项目,走的是 SSR 模式,在服务端会调用一些接口,想通过工具记录每一次访问调用各个接口的耗时,维度是访问的 URL 。


Nodejs 有没有什么工具能做到访问一个页面记录全链路的耗时?
13 回复

刚好上周把这个功能给实现了,不过是 Angular ( SSR 和 CSR 都有)下面的方案,直接监听 NavigationEnd 事件,发送一个请求到服务端就好了,当然,前提是已经实现了 UV 功能。

microsoft charity

主要是业务埋点 工具很多

#5 这个不错呀

只看耗时,浏览器开发者工具的网络瀑布流就可以吧,如果要更多渲染数据,性能分析的数据应该足够了。

sentry,skywalking

这个前阵子调研了一下,牛是牛,但是好重的感觉

后端接口要做性能监测的话,肯定是有代码侵入的。

不是侵不侵入的问题,就是感觉 sentry 很重,各种中间件加起来比我们整个公司用的都多😂

谢谢大家,最终用了 skywalking ,基本无侵入就能达到效果

针对Node.js环境中访问页面记录全链路耗时的问题,确实存在一些工具和方法可以实现这一目标。

首先,Node.js自带了一些性能监控和分析工具,如console.timeconsole.timeEnd,可以用于测量代码块的执行时间。然而,这些工具通常用于简单的性能调试,可能不足以满足全链路监控的需求。

对于更复杂的场景,可以使用一些专业的性能监控和分析工具。例如,clinic是一个由Node.js官方维护的性能分析工具,提供了多种分析场景和可视化报告,有助于定位和解决性能问题。虽然clinic本身不直接提供全链路耗时记录功能,但它可以通过生成火焰图等方式,帮助开发者深入分析应用的性能瓶颈。

此外,还可以使用一些专门的链路追踪工具,如klg-tracer。这个工具基于OpenTracing标准,提供了链路追踪信息,并支持将tracer信息写入数据库(如MongoDB)。通过配置和定制,klg-tracer可以实现全链路耗时记录和分析。

以下是一个简单的klg-tracer使用示例:

const { TraceService, Tracer } = require('klg-tracer');

new TraceService().registerHooks({
  httpServer: {
    useKoa: true,
    // 过滤器,只记录特定接口
    requestFilter: function (req) {
      return true; // 根据需求定制过滤条件
    }
  }
}).registerMongoReporter({
  mongoUrl: 'your-mongo-url',
  collectionName: 'tracer'
});

这段代码展示了如何在Koa服务器中使用klg-tracer,并将追踪信息写入MongoDB。

回到顶部