X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Fopentelemetry%2Ftracing.ts;h=b1c3bd17334876e851f5adda4cfa0a65c014916a;hb=910744fb084499a110d26bf5542abebb8a750b19;hp=23764e9e49c01788e769e034e860579d395a6ca0;hpb=ba2684ceddf9b76312635b9cddc6bf6975ce436a;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/opentelemetry/tracing.ts b/server/lib/opentelemetry/tracing.ts index 23764e9e4..b1c3bd173 100644 --- a/server/lib/opentelemetry/tracing.ts +++ b/server/lib/opentelemetry/tracing.ts @@ -1,4 +1,5 @@ -import { diag, DiagLogLevel, trace } from '@opentelemetry/api' +import { SequelizeInstrumentation } from 'opentelemetry-instrumentation-sequelize' +import { context, diag, DiagLogLevel, trace } from '@opentelemetry/api' import { JaegerExporter } from '@opentelemetry/exporter-jaeger' import { registerInstrumentations } from '@opentelemetry/instrumentation' import { DnsInstrumentation } from '@opentelemetry/instrumentation-dns' @@ -14,6 +15,8 @@ import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions' import { logger } from '@server/helpers/logger' import { CONFIG } from '@server/initializers/config' +const tracer = trace.getTracer('peertube') + function registerOpentelemetryTracing () { if (CONFIG.OPEN_TELEMETRY.TRACING.ENABLED !== true) return @@ -60,7 +63,8 @@ function registerOpentelemetryTracing () { return [ cmdName, ...cmdArgs ].join(' ') } }), - new FsInstrumentation() + new FsInstrumentation(), + new SequelizeInstrumentation() ] }) @@ -73,9 +77,18 @@ function registerOpentelemetryTracing () { tracerProvider.register() } -const tracer = trace.getTracer('peertube') +async function wrapWithSpanAndContext (spanName: string, cb: () => Promise) { + const span = tracer.startSpan(spanName) + const activeContext = trace.setSpan(context.active(), span) + + const result = await context.with(activeContext, () => cb()) + span.end() + + return result +} export { registerOpentelemetryTracing, - tracer + tracer, + wrapWithSpanAndContext }