yiyi17 / nodejs-monitor

nodejs-monitor 监控
1 stars 1 forks source link

nodejs APM 监控

nodejs APM 服务监控

如果 node <= 16 使用 0.0.x 版本的 https://www.npmjs.com/package/@pvjs/nodejs-monitor/v/0.0.2 如果 node >= 18 使用 1.x.x 版本的 https://www.npmjs.com/package/@pvjs/nodejs-monitor?activeTab=readme

快速开始

参数均为非必传,未传入则使用默认值

内存监控

import {
  memoryMonitor
  getV8Profile,
  getHeapSnapshot
} from '@pvjs/nodejs-monitor';

// 内存、gc 监控
memoryMonitor({
  reporter: function (data) {
    // eslint-disable-next-line no-console
    console.log(data);
  } // 基于韦伯进行上报,上报类型 `nodejs_monitor_gc` `nodejs_monitor`,支持自定义 reporter
});

诊断接入

自定义路由接入,在项目的 controller 中调用下面的方法

// 性能看板.cpuprofile
getV8Profile({
  TIME: 3 * 60 * 1000, // 收集 v8Profile 时长。默认 3 分钟
  STATIC_PATH: '<root>/public', // 文件存储的路径,会存在服务中, 默认 join(process.cwd(), '../public')
});

// 内存快照
getHeapSnapshot({
  STATIC_PATH: '<root>/public', // 文件存储的路径,会存在服务中, 默认 join(process.cwd(), '../public')
});

指标看板

可以使用指标服务

v8Profile 使用

1、访问 router,生成 main.cpuprofile文件

2、wget ${STATIC_PATH}/main.cpuprofile 获取线上 .cpuprofile 文件,然后基于 vscode 进行性能分析,Flame Chart Visualizer for JavaScript Profiles,下载 vscode 插件可以直接生成火焰图

注意 📢:请确保 baseRouternginx 配置指向当前的服务

示例

profile profile flame

heapSnapshot 使用

1、访问 router,生成 heapSnapshot 文件

2、wget ${STATIC_PATH}/main.heapSnapshot 获取线上 .heapSnapshot 文件,然后使用 Chrome Memory 功能,加载生成的文件

注意 📢:

1、请确保 baseRouternginx 配置指向当前的服务

2、等到服务人少的时候进行收集文件,因为生成 heapSnapshot 可能比较耗时,文件可能会比较大,超出系统存储上线(特别是本身申请的内存就比较小的服务,可能需要手动清理生成的 heapSnapshot 文件)

指标说明

内存相关指标说明

堆内存

堆内存详情

其他

GC 监控

更多材料

Nodejs APM 监控