mirror of
https://github.com/jambonz/jambonz-feature-server.git
synced 2025-12-19 04:17:44 +00:00
* [snyk] fix vulnerabilities * move all process.env in one config * update log level in config * check envs * fix imports in tests for microsoft, soniox, deepgram * fix import in gather-test * fix missing imports --------- Co-authored-by: Markus Frindt <m.frindt@cognigy.com>
64 lines
2.3 KiB
JavaScript
64 lines
2.3 KiB
JavaScript
const opentelemetry = require('@opentelemetry/api');
|
|
const { registerInstrumentations } = require('@opentelemetry/instrumentation');
|
|
const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node');
|
|
const { Resource } = require('@opentelemetry/resources');
|
|
const { SemanticResourceAttributes } = require('@opentelemetry/semantic-conventions');
|
|
const { BatchSpanProcessor } = require('@opentelemetry/sdk-trace-base');
|
|
const { JaegerExporter } = require('@opentelemetry/exporter-jaeger');
|
|
const { ZipkinExporter } = require('@opentelemetry/exporter-zipkin');
|
|
const { OTLPTraceExporter } = require ('@opentelemetry/exporter-trace-otlp-http');
|
|
const {
|
|
JAMBONES_OTEL_ENABLED,
|
|
OTEL_EXPORTER_JAEGER_AGENT_HOST,
|
|
OTEL_EXPORTER_ZIPKIN_URL,
|
|
} = require('./lib/config');
|
|
|
|
module.exports = (serviceName) => {
|
|
if (JAMBONES_OTEL_ENABLED) {
|
|
const {version} = require('./package.json');
|
|
const provider = new NodeTracerProvider({
|
|
resource: new Resource({
|
|
[SemanticResourceAttributes.SERVICE_NAME]: serviceName,
|
|
[SemanticResourceAttributes.SERVICE_VERSION]: version,
|
|
}),
|
|
});
|
|
|
|
let exporter;
|
|
if (OTEL_EXPORTER_JAEGER_AGENT_HOST || OTEL_EXPORTER_JAEGER_ENDPOINT) {
|
|
exporter = new JaegerExporter();
|
|
}
|
|
else if (OTEL_EXPORTER_ZIPKIN_URL) {
|
|
exporter = new ZipkinExporter({url:OTEL_EXPORTER_ZIPKIN_URL});
|
|
}
|
|
else {
|
|
exporter = new OTLPTraceExporter({
|
|
url: process.OTEL_EXPORTER_COLLECTOR_URL
|
|
});
|
|
}
|
|
|
|
provider.addSpanProcessor(new BatchSpanProcessor(exporter, {
|
|
// The maximum queue size. After the size is reached spans are dropped.
|
|
maxQueueSize: 100,
|
|
// The maximum batch size of every export. It must be smaller or equal to maxQueueSize.
|
|
maxExportBatchSize: 10,
|
|
// The interval between two consecutive exports
|
|
scheduledDelayMillis: 500,
|
|
// How long the export can run before it is cancelled
|
|
exportTimeoutMillis: 30000,
|
|
}));
|
|
|
|
// Initialize the OpenTelemetry APIs to use the NodeTracerProvider bindings
|
|
provider.register();
|
|
registerInstrumentations({
|
|
instrumentations: [
|
|
//new HttpInstrumentation(),
|
|
//new ExpressInstrumentation(),
|
|
//new PinoInstrumentation()
|
|
],
|
|
});
|
|
}
|
|
|
|
return opentelemetry.trace.getTracer(serviceName);
|
|
};
|
|
|