opentelemetry-tracing
Version:
Support add tracing in NodeJS project
51 lines • 2.52 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.start = void 0;
const dotenv_1 = require("dotenv");
const resources_1 = require("@opentelemetry/resources");
const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
const sdk_node_1 = require("@opentelemetry/sdk-node");
const auto_instrumentations_node_1 = require("@opentelemetry/auto-instrumentations-node");
const api_1 = require("@opentelemetry/api");
const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
(0, dotenv_1.config)();
const isDebug = () => process.env.DEBUG_MODE === 'true';
const setResource = (opts) => {
return resources_1.Resource.default().merge(new resources_1.Resource({
[semantic_conventions_1.SemanticResourceAttributes.SERVICE_NAME]: opts.serviceName,
[semantic_conventions_1.SemanticResourceAttributes.SERVICE_VERSION]: opts.version,
}));
};
const setProvider = (resource) => new sdk_trace_node_1.NodeTracerProvider({ resource });
const setExporter = (opts) => new opts.exporter({ url: opts.otlpEndpoint });
if (isDebug())
api_1.diag.setLogger(new api_1.DiagConsoleLogger(), api_1.DiagLogLevel.INFO);
const start = (configs) => {
var _a;
const provider = setProvider(setResource(configs));
const exporter = setExporter(configs);
const showLogConsole = ((_a = configs === null || configs === void 0 ? void 0 : configs.console) === null || _a === void 0 ? void 0 : _a.log) || false;
if (showLogConsole)
provider.addSpanProcessor(new sdk_trace_base_1.SimpleSpanProcessor(new sdk_trace_base_1.ConsoleSpanExporter()));
provider.addSpanProcessor(new sdk_trace_base_1.SimpleSpanProcessor(exporter));
const sdk = new sdk_node_1.NodeSDK({
traceExporter: exporter,
instrumentations: [(0, auto_instrumentations_node_1.getNodeAutoInstrumentations)()],
autoDetectResources: true,
});
provider.register();
process.on('SIGTERM', () => {
sdk
.shutdown()
.then(() => console.log('[Opentelemetry] - Tracing terminated'))
.catch((error) => console.log('Error terminating tracing', error))
.finally(() => process.exit(0));
});
return sdk
.start()
.then(() => console.log('[Opentelemetry] - Tracing initialized'))
.catch((error) => console.log('Error initializing tracing', error));
};
exports.start = start;
//# sourceMappingURL=index.js.map
;