一: 在app目录下的middleware目录建一个qtrace.js文件,内容如下

middleware/qtrace.js

const {  TraceConnectEgg  } =  require('@qnpm/qtrace-node');
module.exports = TraceConnectEgg

二: 在config目录下的config.default.js中做如下配置

config/config.default.js

/* eslint valid-jsdoc: "off" */

'use strict';

module.exports = appInfo => {
 const config = exports = {};
 config.middleware = ['qtrace'];             /**  在此处配置qtrace中间件,名字和你在middleware目录建的qtrace.js名保持一致 **/
  return {
    ...config,
  };
};

三: 在根目录config文件夹中创建名为config.qtrace.js的文件

config/config.qtrace.js

module.exports = {
  name:'qtrace_node_test', // 此字段来自qunar-app.properties
  token: 'wjaQ/1i+sJQKQv/3Nvfk2LYTiLpn52tVJCT0A8V5s'  // 此字段来自qunar-app.properties
  autoTrace: true,                         // 如果开启自动探测,则trace中间件会自动劫持并收集所有路由过来的信息。(如果你只需要记录一个简单版本trace信息可以用这个)
  backup: true,                            // 是否需要备份
  backupDate: 60,                          // 备份时间间隔,默认60分钟
  maxLogSize : 512,                        // 默认512M,超过512M自动备份
  logFile: './logs/qtracer.span.log',      // trace日志地址,qtracer.span.log文件名禁止修改,否则数据组抓取不到,logs文件夹必须跟业务的日志文件夹保持一致
  logErrorFile: './logs/qtracer.error.log',// trace错误日志地址,logs文件夹必须跟业务的日志文件夹保持一致
  backupDir: './logs/backup'               // trace日志备份地址,logs文件夹必须跟业务的日志文件夹保持一致
}

注⚠️: 如果您需要自动收集,您只需要集成以上代码就可以了

四: 在具体业务中埋点,以下是首页index的埋点


'use strict';

const Controller = require('egg').Controller;

class HomeController extends Controller {
  async index() {
    const { ctx } = this;
    // 1: 用start方法注册(开启)一个span
    const { qtrace, parentSpan } = ctx
    const home = qtrace.start({
      qtype: 'http',
      desc: '首页',
      url: '/home'
    },{
      childOf: parentSpan //childOf 是上下文信息,如果你是在根路由,上下文是ctx.parentSpan
    })
    ctx.body = 'hi, egg';
    home.stop()
  }
}

module.exports = HomeController;