jaeger-client: add injector, extractor and codecs (#40323)

Signed-off-by: Rafal Witczak <rafal.witczak@relayr.io>
This commit is contained in:
rafw87
2019-11-18 14:06:57 -08:00
committed by Sheetal Nandi
parent 9e76bef057
commit ad4f800d51
2 changed files with 57 additions and 3 deletions
+40 -2
View File
@@ -79,18 +79,56 @@ export interface TracingOptions {
tags?: any;
}
export interface Injector {
inject(spanContext: opentracing.SpanContext, carrier: any): void;
}
export interface Extractor {
extract(carrier: any): opentracing.SpanContext | null;
}
export class JaegerTracer extends opentracing.Tracer {
registerInjector(format: string, injector: Injector): void;
registerExtractor(format: string, extractor: Extractor): void;
}
export function initTracer(
tracingConfig: TracingConfig,
tracingOptions: TracingOptions
): opentracing.Tracer;
): JaegerTracer;
export function initTracerFromEnv(
tracingConfig: TracingConfig,
tracingOptions: TracingOptions
): opentracing.Tracer;
): JaegerTracer;
export class PrometheusMetricsFactory {
constructor(client: typeof prometheus, serviceName: string);
createCounter(name: string, tags: {}): Counter;
createGauge(name: string, tags: {}): Gauge;
}
export interface TextMapCodecOptions {
urlEncoding?: boolean;
contextKey?: string;
baggagePrefix?: string;
metrics?: MetricsFactory;
}
export class TextMapCodec implements Injector, Extractor {
constructor(options: TextMapCodecOptions);
inject(spanContext: opentracing.SpanContext, carrier: any): void;
extract(carrier: any): opentracing.SpanContext | null;
}
export interface ZipkinB3TextMapCodecOptions {
urlEncoding?: boolean;
baggagePrefix?: string;
metrics?: MetricsFactory;
}
export class ZipkinB3TextMapCodec implements Injector, Extractor {
constructor(options: ZipkinB3TextMapCodecOptions);
inject(spanContext: opentracing.SpanContext, carrier: any): void;
extract(carrier: any): opentracing.SpanContext | null;
}
+17 -1
View File
@@ -1,10 +1,26 @@
import * as jaegerClient from "jaeger-client";
import * as promClient from "prom-client";
import * as opentracing from "opentracing";
const tracingConfig: jaegerClient.TracingConfig = {};
const tracingOptions: jaegerClient.TracingOptions = {};
jaegerClient.initTracer(tracingConfig, tracingOptions);
const tracer = jaegerClient.initTracer(tracingConfig, tracingOptions);
jaegerClient.initTracerFromEnv(tracingConfig, tracingOptions);
const metrics = new jaegerClient.PrometheusMetricsFactory(promClient, "foo");
const textCodec = new jaegerClient.TextMapCodec({
contextKey: 'trace-id',
baggagePrefix: 'baggage-',
urlEncoding: false,
});
tracer.registerInjector(opentracing.FORMAT_TEXT_MAP, textCodec);
tracer.registerExtractor(opentracing.FORMAT_TEXT_MAP, textCodec);
const zipkinB3TextMapCodec = new jaegerClient.ZipkinB3TextMapCodec({
baggagePrefix: 'baggage-',
urlEncoding: false,
});
tracer.registerInjector(opentracing.FORMAT_HTTP_HEADERS, zipkinB3TextMapCodec);
tracer.registerExtractor(opentracing.FORMAT_HTTP_HEADERS, zipkinB3TextMapCodec);