Have ideas to improve npm?Join in the discussion! »

xa-tracker

1.2.0 • Public • Published

xa-tracker

xa tracker eggjs plugin which can generate a new tracker object for each ctx, ctx.request and ctx.response instance automatically.

Install

$ npm i xa-tracker --save

Usage

// {app_root}/config/plugin.js
exports.xaTracker = {
  enable: true,
  package: 'xa-tracker',
};

Configuration

// {app_root}/config/config.default.js
exports.xaTracker = {
  debug: false, // 是否开启调试日志
  isRootEndPoint: true, // 是否为根节点
  filterConditions: [{ url: 'xxxx', span_name: 'xxxx' }] // 请求过滤条件
  frequency: 1, // 采样间隔,每${frequency}次请求,采样一次
  url: 'http://10.12.31.175:18166/lqm/spanReport', // 链路监控API地址
};
 
exports.middleware = ['xaTracker'] // Enable tracker middleware
 

see config/config.default.js for more detail.

Example

// {app_root}/controller/index.js
 
const Controller = require('egg').Controller;
 
class HomeController extends Controller {
/**
 * Get tracker object through ctx, ctx.request or ctx.response.
 *
 * @params {string} tracker.trace_id      - get from http header of trace-id or autoGenerate by plugin if rootEndPoint is true.
 * @params {string} tracker.span_id       - generate by plugin automatically.
 * @params {string} tracker.parent_id     - get from http header of span-id or autoGenerate by plugin if rootEndPoint is true.
 * 
 * @memberof HomeController
 */
  async index() {
    const span_name = 'mock_span_name';
    const span_id = this.ctx.idGenerator(); // 生成新的spanId
    const parent_id = this.ctx.tracker.span_id; // 获取parentId
    this.ctx.tracker.sendToRemote(2, span_name, span_id, parent_id); // 上报链路信息(异步)
    // mock grpc call...
    const trace_id = this.ctx.tracker.trace_id;
    const dln = this.ctx.tracker.DLN;
    await this.ctx.grpc.command.sendCommand({ span_name, span_id, parent_id, trace_id, dln }) 
    // ...
    this.ctx.tracker.sendToRemote(3, span_name, span_id, parent_id); // 上报链路信息(异步)
    this.ctx.body = this.ctx.tracker;
  }
}
 
module.exports = HomeController;

Questions & Suggestions

Please open an issue here.

License

MIT

Install

npm i xa-tracker

DownloadsWeekly Downloads

19

Version

1.2.0

License

MIT

Unpacked Size

10 kB

Total Files

6

Last publish

Collaborators

  • avatar