Browse Source

Adds better tracer isolation (in theory)

main
Eric Amodio 2 years ago
parent
commit
4e2e82f610
1 changed files with 16 additions and 12 deletions
  1. +16
    -12
      src/telemetry/openTelemetryProvider.ts

+ 16
- 12
src/telemetry/openTelemetryProvider.ts View File

@ -1,12 +1,12 @@
import type { AttributeValue, Span, TimeInput, Tracer } from '@opentelemetry/api';
import { diag, DiagConsoleLogger, trace } from '@opentelemetry/api';
import { DiagLogLevel } from '@opentelemetry/api/build/src/diag/types';
// import { diag, DiagConsoleLogger } from '@opentelemetry/api';
// import { DiagLogLevel } from '@opentelemetry/api/build/src/diag/types';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
import { Resource } from '@opentelemetry/resources';
import {
BasicTracerProvider,
BatchSpanProcessor,
ConsoleSpanExporter,
// ConsoleSpanExporter,
SimpleSpanProcessor,
} from '@opentelemetry/sdk-trace-base';
import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions';
@ -15,10 +15,12 @@ import type { TelemetryContext, TelemetryProvider } from './telemetry';
export class OpenTelemetryProvider implements TelemetryProvider {
private _globalAttributes: Record<string, AttributeValue> = {};
private readonly provider: BasicTracerProvider;
private readonly tracer: Tracer;
constructor(context: TelemetryContext, agent?: HttpsProxyAgent, debugging?: boolean) {
const provider = new BasicTracerProvider({
this.provider = new BasicTracerProvider({
resource: new Resource({
[SemanticResourceAttributes.SERVICE_NAME]: 'gitlens',
[SemanticResourceAttributes.SERVICE_VERSION]: context.extensionVersion,
@ -37,10 +39,10 @@ export class OpenTelemetryProvider implements TelemetryProvider {
}) as any,
});
if (debugging) {
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.VERBOSE);
provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));
}
// if (debugging) {
// diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.VERBOSE);
// this.provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));
// }
const exporter = new OTLPTraceExporter({
url: debugging
@ -49,15 +51,17 @@ export class OpenTelemetryProvider implements TelemetryProvider {
compression: 'gzip' as any,
httpAgentOptions: agent?.options,
});
provider.addSpanProcessor(debugging ? new SimpleSpanProcessor(exporter) : new BatchSpanProcessor(exporter));
this.provider.addSpanProcessor(
debugging ? new SimpleSpanProcessor(exporter) : new BatchSpanProcessor(exporter),
);
provider.register();
this.provider.register();
this.tracer = trace.getTracer(context.extensionId);
this.tracer = this.provider.getTracer(context.extensionId);
}
dispose(): void {
trace.disable();
void this.provider.shutdown();
}
sendEvent(name: string, data?: Record<string, AttributeValue>, startTime?: TimeInput, endTime?: TimeInput): void {

||||||
x
 
000:0
Loading…
Cancel
Save