LibreChat/api/server/telemetry.js
Danny Avila 050b7fd43a
📡 feat: Add Backend OpenTelemetry Tracing (#12909)
* feat: add backend OpenTelemetry tracing

* fix: address telemetry type checks

* fix: mark aborted telemetry requests as errors

* fix: record telemetry identity after auth

* fix: avoid forced telemetry signal exit

* fix: harden telemetry request attribution

* fix: record telemetry errors on request span

* chore: order imports and reorganize middleware usage

* fix: reduce telemetry startup overhead

* fix: preserve live telemetry controller state

* fix: redact telemetry URL attributes
2026-05-14 09:08:55 -04:00

40 lines
941 B
JavaScript

require('dotenv').config();
function isTruthy(value) {
return value?.trim().toLowerCase() === 'true';
}
function isTelemetryEnabled() {
return isTruthy(process.env.OTEL_TRACING_ENABLED) && !isTruthy(process.env.OTEL_SDK_DISABLED);
}
if (isTelemetryEnabled()) {
const {
initializeTelemetry,
telemetryMiddleware,
telemetryErrorMiddleware,
} = require('@librechat/api/telemetry');
const controller = initializeTelemetry();
module.exports = {
get enabled() {
return controller.enabled;
},
get status() {
return controller.status;
},
shutdown: controller.shutdown,
telemetryMiddleware,
telemetryErrorMiddleware,
};
} else {
module.exports = {
enabled: false,
get status() {
return 'disabled';
},
shutdown: async () => {},
telemetryMiddleware: (_req, _res, next) => next(),
telemetryErrorMiddleware: (err, _req, _res, next) => next(err),
};
}