@vtex/api
Version:
VTEX I/O API client
50 lines (49 loc) • 2.31 kB
JavaScript
;
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;