UNPKG

node-sleuth

Version:

A zipkin sleuth impelement for general node.

100 lines (99 loc) 3.33 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const debug_1 = __importDefault(require("debug")); const zipkin_1 = require("zipkin"); const zipkin_context_cls_1 = __importDefault(require("zipkin-context-cls")); const zipkin_transport_http_1 = require("zipkin-transport-http"); const ejector_1 = require("./ejector"); const injector_1 = require("./injector"); const log = debug_1.default('dubbo:sleuth:tracing'); exports.Span = zipkin_1.model.Span; exports.Endpoint = zipkin_1.model.Endpoint; class Tracing { constructor(args) { log('[constructor] Tracing'); const { ctxName = 'zipkin', ctxImpl, recorder: InputRecorder, localServiceName, jsonEncoder = zipkin_1.jsonEncoder.JSON_V2, endpointHost = 'localhost', endpointPort = '9411', endpoint, httpTimeout = 500, } = args; const context = ctxImpl ? ctxImpl : new zipkin_context_cls_1.default(ctxName); Tracing._logger = InputRecorder ? InputRecorder.logger : new zipkin_transport_http_1.HttpLogger({ endpoint: endpoint ? endpoint : `http://${endpointHost}:${endpointPort}/api/v2/spans`, timeout: httpTimeout, jsonEncoder, }); const recorder = InputRecorder ? InputRecorder : new zipkin_1.BatchRecorder({ logger: Tracing._logger, }); Tracing._tracer = new zipkin_1.Tracer({ ctxImpl: context, localServiceName, recorder, }); if (args.traceId) { Tracing._hasRootTracer = true; Tracing.tracer.setId(args.traceId); } if (args.injector) { Tracing._injector = args.injector; } else { Tracing._injector = new injector_1.HttpInjector(); } if (args.ejector) { Tracing._ejector = args.ejector; } else { Tracing._ejector = new ejector_1.HttpEjector(); } return Tracing.tracer; } static get tracer() { if (!Tracing._tracer) { throw Error('[uninitial] Tracing'); } return Tracing._tracer; } static get logger() { if (!Tracing._tracer) { throw Error('[uninitial] Tracing'); } return Tracing._logger; } static get injector() { if (!Tracing._injector) { throw Error('[uninitial] Tracing'); } return Tracing._injector; } static get ejector() { if (!Tracing._ejector) { throw Error('[uninitial] Tracing'); } return Tracing._ejector; } static get hasRootTracer() { return !!Tracing._hasRootTracer; } static set hasRootTracer(value) { Tracing._hasRootTracer = !!value; } static get ip() { return zipkin_1.InetAddress.getLocalAddress().ipv4(); } static init(args) { try { if (Tracing.tracer) { log('[hasInitialized] Tracing'); return Tracing.tracer; } } catch (e) { new Tracing(args); } finally { return Tracing.tracer; } } } exports.Tracing = Tracing;