UNPKG

@vtex/api

Version:
50 lines (49 loc) 2.31 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TracerSingleton = void 0; const jaeger_client_1 = require("jaeger-client"); const prom_client_1 = __importDefault(require("prom-client")); const constants_1 = require("../../constants"); const utils_1 = require("../../utils"); class TracerSingleton { static getTracer() { if (!TracerSingleton.singleton) { TracerSingleton.singleton = TracerSingleton.initServiceTracer(); } return TracerSingleton.singleton; } static initServiceTracer() { return TracerSingleton.createJaegerTracer((0, utils_1.appIdToAppAtMajor)(constants_1.APP.ID), { ["app.linked" /* AppTags.VTEX_APP_LINKED */]: constants_1.LINKED, ["app.node_vtex_api_version" /* AppTags.VTEX_APP_NODE_VTEX_API_VERSION */]: constants_1.NODE_VTEX_API_VERSION, ["app.production" /* AppTags.VTEX_APP_PRODUCTION */]: constants_1.PRODUCTION, ["app.region" /* AppTags.VTEX_APP_REGION */]: constants_1.REGION, ["app.version" /* AppTags.VTEX_APP_VERSION */]: constants_1.APP.VERSION, ["app.workspace" /* AppTags.VTEX_APP_WORKSPACE */]: constants_1.WORKSPACE, ["app.node_env" /* AppTags.VTEX_APP_NODE_ENV */]: constants_1.NODE_ENV !== null && constants_1.NODE_ENV !== void 0 ? constants_1.NODE_ENV : 'undefined', }); } static createJaegerTracer(serviceName, defaultTags) { const config = { reporter: { agentHost: process.env.VTEX_OWN_NODE_IP, }, serviceName, }; const options = { /** * Jaeger metric names are available in: * https://github.com/jaegertracing/jaeger-client-node/blob/master/src/metrics/metrics.js * * Runtime will prefix these metrics with 'runtime:' */ metrics: new jaeger_client_1.PrometheusMetricsFactory(prom_client_1.default, 'runtime'), tags: defaultTags, }; return (0, jaeger_client_1.initTracer)(config, options); } } exports.TracerSingleton = TracerSingleton;