From 12a91cf5a530959819e6be56a6ecb09e249e120a Mon Sep 17 00:00:00 2001 From: rishtigupta Date: Mon, 6 May 2024 14:39:05 -0700 Subject: [PATCH 1/4] chore: make openTelemetryClient more abstract --- src/goodmetrics/metricsSetups.ts | 38 ++++++++++++++++---------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/goodmetrics/metricsSetups.ts b/src/goodmetrics/metricsSetups.ts index bdcd599..7f8f537 100644 --- a/src/goodmetrics/metricsSetups.ts +++ b/src/goodmetrics/metricsSetups.ts @@ -67,9 +67,10 @@ interface ConfigureBatchedPreaggregatedLightstepSinkProps { } interface PrivateOtelClientProps { - lightstepToken: string; - lightstepUrl: string; - lightstepPort: number; + authToken: string; + authHeaderName: string; + ingestUrl: string; + ingestPort: number; metricDimensions: Map; resourceDimensions: Map; } @@ -119,15 +120,16 @@ export class MetricsSetups { }; } static lightstepNativeOtlp( - props: LightstepNativeOtlpProps + props: LightstepNativeOtlpProps ): ConfiguredMetrics { const client = this.opentelemetryClient({ metricDimensions: props.metricDimensions ?? new Map(), resourceDimensions: - props.resourceDimensions ?? new Map(), - lightstepToken: props.lightstepAccessToken, - lightstepPort: props.lightstepPort ?? 443, - lightstepUrl: props.lightstepUrl ?? 'ingest.lightstep.com', + props.resourceDimensions ?? new Map(), + authToken: props.lightstepAccessToken, + ingestPort: props.lightstepPort ?? 443, + ingestUrl: props.lightstepUrl ?? 'ingest.lightstep.com', + authHeaderName: 'lightstep-access-token', }); const unarySink = this.configureBatchedUnaryLightstepSink({ @@ -168,7 +170,7 @@ export class MetricsSetups { * @param props */ static lightstepNativeOtlpButItSendsMetricsUponRecordingForLambda( - props: LightstepNativeLambdaOtlpProps + props: LightstepNativeLambdaOtlpProps ): MetricsFactory { const headers = [ new Header('lightstep-access-token', props.lightstepAccessToken), @@ -204,7 +206,7 @@ export class MetricsSetups { } private static configureBatchedUnaryLightstepSink( - props: ConfigureBatchedUnaryLightstepSinkProps + props: ConfigureBatchedUnaryLightstepSinkProps ): SynchronizingBuffer { const unarySink = new SynchronizingBuffer(); const unaryBatcher = new Batcher({ @@ -235,7 +237,7 @@ export class MetricsSetups { } private static configureBatchedPreaggregatedLightstepSink( - props: ConfigureBatchedPreaggregatedLightstepSinkProps + props: ConfigureBatchedPreaggregatedLightstepSinkProps ): Aggregator { const sink = new Aggregator({ aggregationWidthMillis: props.aggregationWidthMillis, @@ -267,18 +269,16 @@ export class MetricsSetups { return sink; } - private static opentelemetryClient( - props: PrivateOtelClientProps + static opentelemetryClient( + props: PrivateOtelClientProps ): OpenTelemetryClient { - const headers = [ - new Header('lightstep-access-token', props.lightstepToken), - ]; + const headers = [new Header(props.authHeaderName, props.authToken)]; return OpenTelemetryClient.connect({ - sillyOtlpHostname: props.lightstepUrl ?? 'ingest.lightstep.com', - port: props.lightstepPort ?? 443, + sillyOtlpHostname: props.ingestUrl, + port: props.ingestPort, metricDimensions: props.metricDimensions ?? new Map(), resourceDimensions: - props.resourceDimensions ?? new Map(), + props.resourceDimensions ?? new Map(), interceptors: [ new HeaderInterceptorProvider(headers).createHeadersInterceptor(), ], From e41f18ff613373ae2cb1152d71f55754e0e34cc1 Mon Sep 17 00:00:00 2001 From: rishtigupta Date: Mon, 6 May 2024 15:03:35 -0700 Subject: [PATCH 2/4] chore: make headers as one param --- src/goodmetrics/metricsSetups.ts | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/goodmetrics/metricsSetups.ts b/src/goodmetrics/metricsSetups.ts index 7f8f537..78b80de 100644 --- a/src/goodmetrics/metricsSetups.ts +++ b/src/goodmetrics/metricsSetups.ts @@ -67,8 +67,10 @@ interface ConfigureBatchedPreaggregatedLightstepSinkProps { } interface PrivateOtelClientProps { - authToken: string; - authHeaderName: string; + headers: { + authToken: string; + authHeaderName: string; + }; ingestUrl: string; ingestPort: number; metricDimensions: Map; @@ -120,16 +122,18 @@ export class MetricsSetups { }; } static lightstepNativeOtlp( - props: LightstepNativeOtlpProps + props: LightstepNativeOtlpProps ): ConfiguredMetrics { const client = this.opentelemetryClient({ metricDimensions: props.metricDimensions ?? new Map(), resourceDimensions: - props.resourceDimensions ?? new Map(), - authToken: props.lightstepAccessToken, + props.resourceDimensions ?? new Map(), ingestPort: props.lightstepPort ?? 443, ingestUrl: props.lightstepUrl ?? 'ingest.lightstep.com', - authHeaderName: 'lightstep-access-token', + headers: { + authToken: props.lightstepAccessToken, + authHeaderName: 'lightstep-access-token', + }, }); const unarySink = this.configureBatchedUnaryLightstepSink({ @@ -170,7 +174,7 @@ export class MetricsSetups { * @param props */ static lightstepNativeOtlpButItSendsMetricsUponRecordingForLambda( - props: LightstepNativeLambdaOtlpProps + props: LightstepNativeLambdaOtlpProps ): MetricsFactory { const headers = [ new Header('lightstep-access-token', props.lightstepAccessToken), @@ -206,7 +210,7 @@ export class MetricsSetups { } private static configureBatchedUnaryLightstepSink( - props: ConfigureBatchedUnaryLightstepSinkProps + props: ConfigureBatchedUnaryLightstepSinkProps ): SynchronizingBuffer { const unarySink = new SynchronizingBuffer(); const unaryBatcher = new Batcher({ @@ -237,7 +241,7 @@ export class MetricsSetups { } private static configureBatchedPreaggregatedLightstepSink( - props: ConfigureBatchedPreaggregatedLightstepSinkProps + props: ConfigureBatchedPreaggregatedLightstepSinkProps ): Aggregator { const sink = new Aggregator({ aggregationWidthMillis: props.aggregationWidthMillis, @@ -270,15 +274,17 @@ export class MetricsSetups { } static opentelemetryClient( - props: PrivateOtelClientProps + props: PrivateOtelClientProps ): OpenTelemetryClient { - const headers = [new Header(props.authHeaderName, props.authToken)]; + const headers = [ + new Header(props.headers.authHeaderName, props.headers.authToken), + ]; return OpenTelemetryClient.connect({ sillyOtlpHostname: props.ingestUrl, port: props.ingestPort, metricDimensions: props.metricDimensions ?? new Map(), resourceDimensions: - props.resourceDimensions ?? new Map(), + props.resourceDimensions ?? new Map(), interceptors: [ new HeaderInterceptorProvider(headers).createHeadersInterceptor(), ], From 3d1eb77474eefb0e070bb20fa9ba2cf9b5473e50 Mon Sep 17 00:00:00 2001 From: rishtigupta Date: Mon, 6 May 2024 15:08:06 -0700 Subject: [PATCH 3/4] fix: make headers of type Header[] --- src/goodmetrics/metricsSetups.ts | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/goodmetrics/metricsSetups.ts b/src/goodmetrics/metricsSetups.ts index 78b80de..973d19a 100644 --- a/src/goodmetrics/metricsSetups.ts +++ b/src/goodmetrics/metricsSetups.ts @@ -67,10 +67,7 @@ interface ConfigureBatchedPreaggregatedLightstepSinkProps { } interface PrivateOtelClientProps { - headers: { - authToken: string; - authHeaderName: string; - }; + headers: Header[]; ingestUrl: string; ingestPort: number; metricDimensions: Map; @@ -130,10 +127,7 @@ export class MetricsSetups { props.resourceDimensions ?? new Map(), ingestPort: props.lightstepPort ?? 443, ingestUrl: props.lightstepUrl ?? 'ingest.lightstep.com', - headers: { - authToken: props.lightstepAccessToken, - authHeaderName: 'lightstep-access-token', - }, + headers: [new Header('lightstep-access-token', props.lightstepAccessToken)], }); const unarySink = this.configureBatchedUnaryLightstepSink({ @@ -276,9 +270,7 @@ export class MetricsSetups { static opentelemetryClient( props: PrivateOtelClientProps ): OpenTelemetryClient { - const headers = [ - new Header(props.headers.authHeaderName, props.headers.authToken), - ]; + const headers = props.headers; return OpenTelemetryClient.connect({ sillyOtlpHostname: props.ingestUrl, port: props.ingestPort, From 1f70bf4515bd856f2d4c6f63b20bdd7da229e99b Mon Sep 17 00:00:00 2001 From: rishtigupta Date: Mon, 6 May 2024 15:17:50 -0700 Subject: [PATCH 4/4] fix: lint issue --- src/goodmetrics/metricsSetups.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/goodmetrics/metricsSetups.ts b/src/goodmetrics/metricsSetups.ts index 973d19a..ad79095 100644 --- a/src/goodmetrics/metricsSetups.ts +++ b/src/goodmetrics/metricsSetups.ts @@ -127,7 +127,9 @@ export class MetricsSetups { props.resourceDimensions ?? new Map(), ingestPort: props.lightstepPort ?? 443, ingestUrl: props.lightstepUrl ?? 'ingest.lightstep.com', - headers: [new Header('lightstep-access-token', props.lightstepAccessToken)], + headers: [ + new Header('lightstep-access-token', props.lightstepAccessToken), + ], }); const unarySink = this.configureBatchedUnaryLightstepSink({