xa-tracker
v1.2.0
Published
egg http request tracker
Downloads
8
Maintainers
Readme
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.