UNPKG

node-dubbo-sleuth

Version:
93 lines (70 loc) 2.5 kB
# dubbo-sleuth --- [![NPM](https://nodei.co/npm/dubbo-sleuth.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/dubbo-sleuth) dubbo-sleuth = dubbo2.js + zipkin-js ## Thanks a lots of [Dubbo2.js](https://github.com/dubbo/dubbo2.js) # Features --- 1. Keep it Simple. (follow dubbo2.js) 2. More details which you can handle. 3. Senseless integration for brave. 4. Typescript type definitions. # Getting Started ## How to Usage? ### basic useage ```ts //===================== app.ts ===================== import { Application, IBoot } from 'egg'; import { Tracing, DubboInjector } from 'node-dubbo-sleuth'; export default class AppBootHook implements IBoot { private readonly app: Application; constructor(app) { this.app = app; } async didReady() { Tracing.init({ localServiceName: 'systemname', endpointHost: 'localhost', endpointPort: 9411, injector: new DubboInjector(), }); } } //===================== app/dubbo/index.ts ===================== import { sleuth } from 'dubbo-sleuth'; // same as dubbo2.js config dubbo.use(sleuth()); // then you will tracing by zipkin. ``` ### advanced useage tracing from http request ```ts //===================== app/middleware/tracing.ts ===================== import { Endpoint, Span, Tracing } from 'dubbo-sleuth'; import { Application, Context } from 'egg'; import zone from 'zone-context'; // you can config it match only /api/* export default (_config: any, app: Application) => async (ctx: Context, next: Function) => { const traceIdEjected = Tracing.ejector.eject(ctx.headers); const rootTraceId = traceIdEjected.getOrElse(() => Tracing.tracer.createRootId()); // get TraceId from Http Headers zone.setRootContext('traceId', rootTraceId); // set rootTraceId into dubbo.js zone const span = new Span(rootTraceId); // same as `node-sleuth` config }; //===================== app/dubbo/index.ts ===================== import { sleuth, Span } from 'dubbo-sleuth'; import zone from 'zone-context'; // same as dubbo2.js config dubbo.use( sleuth({ createTraceId(tracer) { // get rootTraceId from dubbo.js zone const traceId = zone.get('traceId'); tracer.setId(traceId); return tracer.createChildId(); }, }), ); // then you will tracing by zipkin. ```