From 32fe8d0a8523d6e1875cd0814c0cbdf27d8df7b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20S=C3=B3jko?= Date: Fri, 13 Oct 2023 10:19:33 +0200 Subject: [PATCH] fix: reduce the amount of metrics gathered in telemetery --- packages/analytics/bin/report.ts | 2 +- packages/analytics/bin/worker.ts | 2 +- packages/api-gateway/bin/server.ts | 2 +- packages/auth/bin/backup.ts | 2 +- packages/auth/bin/cleanup.ts | 2 +- packages/auth/bin/server.ts | 2 +- packages/auth/bin/stats.ts | 2 +- packages/auth/bin/transition.ts | 2 +- packages/auth/bin/user_email_backup.ts | 2 +- packages/auth/bin/worker.ts | 2 +- .../Infra/OpenTelemetry/OpenTelemetrySDK.ts | 19 +++++++++++++------ packages/files/bin/server.ts | 2 +- packages/files/bin/worker.ts | 2 +- packages/revisions/bin/server.ts | 2 +- packages/revisions/bin/worker.ts | 2 +- packages/scheduler/bin/verify.ts | 2 +- packages/scheduler/bin/worker.ts | 2 +- packages/syncing-server/bin/server.ts | 2 +- packages/syncing-server/bin/worker.ts | 2 +- packages/websockets/bin/server.ts | 2 +- packages/websockets/bin/worker.ts | 2 +- 21 files changed, 33 insertions(+), 26 deletions(-) diff --git a/packages/analytics/bin/report.ts b/packages/analytics/bin/report.ts index a9f0b719f..cd45e80f7 100644 --- a/packages/analytics/bin/report.ts +++ b/packages/analytics/bin/report.ts @@ -3,7 +3,7 @@ import 'reflect-metadata' import { OpenTelemetrySDK, OpenTelemetryTracer } from '@standardnotes/domain-events-infra' import { EmailLevel, ServiceIdentifier } from '@standardnotes/domain-core' -const sdk = new OpenTelemetrySDK(ServiceIdentifier.NAMES.AnalyticsScheduledTask) +const sdk = new OpenTelemetrySDK({ serviceName: ServiceIdentifier.NAMES.AnalyticsScheduledTask }) sdk.start() import { Logger } from 'winston' diff --git a/packages/analytics/bin/worker.ts b/packages/analytics/bin/worker.ts index 4b69f2ea7..ae730062a 100644 --- a/packages/analytics/bin/worker.ts +++ b/packages/analytics/bin/worker.ts @@ -3,7 +3,7 @@ import 'reflect-metadata' import { OpenTelemetrySDK } from '@standardnotes/domain-events-infra' import { ServiceIdentifier } from '@standardnotes/domain-core' -const sdk = new OpenTelemetrySDK(ServiceIdentifier.NAMES.AnalyticsWorker) +const sdk = new OpenTelemetrySDK({ serviceName: ServiceIdentifier.NAMES.AnalyticsWorker }) sdk.start() import { Logger } from 'winston' diff --git a/packages/api-gateway/bin/server.ts b/packages/api-gateway/bin/server.ts index 64284a964..a2f67802b 100644 --- a/packages/api-gateway/bin/server.ts +++ b/packages/api-gateway/bin/server.ts @@ -3,7 +3,7 @@ import 'reflect-metadata' import { OpenTelemetrySDK } from '@standardnotes/domain-events-infra' import { ServiceIdentifier } from '@standardnotes/domain-core' -const sdk = new OpenTelemetrySDK(ServiceIdentifier.NAMES.ApiGateway) +const sdk = new OpenTelemetrySDK({ serviceName: ServiceIdentifier.NAMES.ApiGateway }) sdk.start() import '../src/Controller/LegacyController' diff --git a/packages/auth/bin/backup.ts b/packages/auth/bin/backup.ts index e4e884e2c..0387681df 100644 --- a/packages/auth/bin/backup.ts +++ b/packages/auth/bin/backup.ts @@ -3,7 +3,7 @@ import 'reflect-metadata' import { OpenTelemetrySDK, OpenTelemetryTracer } from '@standardnotes/domain-events-infra' import { ServiceIdentifier } from '@standardnotes/domain-core' -const sdk = new OpenTelemetrySDK(ServiceIdentifier.NAMES.AuthScheduledTask) +const sdk = new OpenTelemetrySDK({ serviceName: ServiceIdentifier.NAMES.AuthScheduledTask }) sdk.start() import { Stream } from 'stream' diff --git a/packages/auth/bin/cleanup.ts b/packages/auth/bin/cleanup.ts index 4fdf955c3..0644309a8 100644 --- a/packages/auth/bin/cleanup.ts +++ b/packages/auth/bin/cleanup.ts @@ -3,7 +3,7 @@ import 'reflect-metadata' import { OpenTelemetrySDK, OpenTelemetryTracer } from '@standardnotes/domain-events-infra' import { ServiceIdentifier } from '@standardnotes/domain-core' -const sdk = new OpenTelemetrySDK(ServiceIdentifier.NAMES.AuthScheduledTask) +const sdk = new OpenTelemetrySDK({ serviceName: ServiceIdentifier.NAMES.AuthScheduledTask }) sdk.start() import { Logger } from 'winston' diff --git a/packages/auth/bin/server.ts b/packages/auth/bin/server.ts index 829f5761b..263a97b23 100644 --- a/packages/auth/bin/server.ts +++ b/packages/auth/bin/server.ts @@ -3,7 +3,7 @@ import 'reflect-metadata' import { OpenTelemetrySDK } from '@standardnotes/domain-events-infra' import { ServiceIdentifier } from '@standardnotes/domain-core' -const sdk = new OpenTelemetrySDK(ServiceIdentifier.NAMES.Auth) +const sdk = new OpenTelemetrySDK({ serviceName: ServiceIdentifier.NAMES.Auth }) sdk.start() import '../src/Infra/InversifyExpressUtils/AnnotatedAuthController' diff --git a/packages/auth/bin/stats.ts b/packages/auth/bin/stats.ts index e08a60e20..72a00ecee 100644 --- a/packages/auth/bin/stats.ts +++ b/packages/auth/bin/stats.ts @@ -3,7 +3,7 @@ import 'reflect-metadata' import { OpenTelemetrySDK, OpenTelemetryTracer } from '@standardnotes/domain-events-infra' import { ServiceIdentifier } from '@standardnotes/domain-core' -const sdk = new OpenTelemetrySDK(ServiceIdentifier.NAMES.AuthScheduledTask) +const sdk = new OpenTelemetrySDK({ serviceName: ServiceIdentifier.NAMES.AuthScheduledTask }) sdk.start() import { Logger } from 'winston' diff --git a/packages/auth/bin/transition.ts b/packages/auth/bin/transition.ts index 3de8cb0dc..3531bb83b 100644 --- a/packages/auth/bin/transition.ts +++ b/packages/auth/bin/transition.ts @@ -3,7 +3,7 @@ import 'reflect-metadata' import { OpenTelemetrySDK, OpenTelemetryTracer } from '@standardnotes/domain-events-infra' import { ServiceIdentifier, RoleName, TransitionStatus } from '@standardnotes/domain-core' -const sdk = new OpenTelemetrySDK(ServiceIdentifier.NAMES.AuthScheduledTask) +const sdk = new OpenTelemetrySDK({ serviceName: ServiceIdentifier.NAMES.AuthScheduledTask }) sdk.start() import { Logger } from 'winston' diff --git a/packages/auth/bin/user_email_backup.ts b/packages/auth/bin/user_email_backup.ts index 9ef5890a4..c6d819b96 100644 --- a/packages/auth/bin/user_email_backup.ts +++ b/packages/auth/bin/user_email_backup.ts @@ -3,7 +3,7 @@ import 'reflect-metadata' import { OpenTelemetrySDK, OpenTelemetryTracer } from '@standardnotes/domain-events-infra' import { Email, ServiceIdentifier } from '@standardnotes/domain-core' -const sdk = new OpenTelemetrySDK(ServiceIdentifier.NAMES.AuthScheduledTask) +const sdk = new OpenTelemetrySDK({ serviceName: ServiceIdentifier.NAMES.AuthScheduledTask }) sdk.start() import { Logger } from 'winston' diff --git a/packages/auth/bin/worker.ts b/packages/auth/bin/worker.ts index 5ff839729..779c2d788 100644 --- a/packages/auth/bin/worker.ts +++ b/packages/auth/bin/worker.ts @@ -3,7 +3,7 @@ import 'reflect-metadata' import { OpenTelemetrySDK } from '@standardnotes/domain-events-infra' import { ServiceIdentifier } from '@standardnotes/domain-core' -const sdk = new OpenTelemetrySDK(ServiceIdentifier.NAMES.AuthWorker) +const sdk = new OpenTelemetrySDK({ serviceName: ServiceIdentifier.NAMES.AuthWorker }) sdk.start() import { Logger } from 'winston' diff --git a/packages/domain-events-infra/src/Infra/OpenTelemetry/OpenTelemetrySDK.ts b/packages/domain-events-infra/src/Infra/OpenTelemetry/OpenTelemetrySDK.ts index 77fba3a83..e664d942a 100644 --- a/packages/domain-events-infra/src/Infra/OpenTelemetry/OpenTelemetrySDK.ts +++ b/packages/domain-events-infra/src/Infra/OpenTelemetry/OpenTelemetrySDK.ts @@ -18,8 +18,11 @@ export class OpenTelemetrySDK implements OpenTelemetrySDKInterface { private declare sdk: OpenTelemetrySDKNode.NodeSDK constructor( - private serviceName: string, - private spanRatio?: number, + private options: { + serviceName: string + spanRatio?: number + metricExportIntervalMillis?: number + }, ) { this.build() } @@ -27,24 +30,28 @@ export class OpenTelemetrySDK implements OpenTelemetrySDKInterface { build(): void { const otResource = OpenTelemetrySDKNode.resources.Resource.default().merge( new OpenTelemetrySDKNode.resources.Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: this.serviceName, + [SemanticResourceAttributes.SERVICE_NAME]: this.options.serviceName, }), ) + const traceExporter = new OTLPTraceExporter() + const spanProcessor = new OpenTelemetrySDKNode.tracing.BatchSpanProcessor(traceExporter) + + const metricExportIntervalMillis = this.options.metricExportIntervalMillis ?? 300_000 const metricReader = new OpenTelemetrySDKNode.metrics.PeriodicExportingMetricReader({ - exportIntervalMillis: 1_000, + exportIntervalMillis: metricExportIntervalMillis, exporter: new OTLPMetricExporter(), }) - const serviceName = this.serviceName + const serviceName = this.options.serviceName const winstonInstrumentation = new WinstonInstrumentation({ logHook: (_span, record) => { record['resource.service.name'] = serviceName }, }) - const ratio = this.spanRatio ?? 0.01 + const ratio = this.options.spanRatio ?? 0.01 this.sdk = new OpenTelemetrySDKNode.NodeSDK({ sampler: new OpenTelemetrySDKNode.tracing.TraceIdRatioBasedSampler(ratio), diff --git a/packages/files/bin/server.ts b/packages/files/bin/server.ts index 32dc578fa..bddfbade1 100644 --- a/packages/files/bin/server.ts +++ b/packages/files/bin/server.ts @@ -3,7 +3,7 @@ import 'reflect-metadata' import { OpenTelemetrySDK } from '@standardnotes/domain-events-infra' import { ServiceIdentifier } from '@standardnotes/domain-core' -const sdk = new OpenTelemetrySDK(ServiceIdentifier.NAMES.Files) +const sdk = new OpenTelemetrySDK({ serviceName: ServiceIdentifier.NAMES.Files }) sdk.start() import * as busboy from 'connect-busboy' diff --git a/packages/files/bin/worker.ts b/packages/files/bin/worker.ts index 450611d6f..fa4cf70c4 100644 --- a/packages/files/bin/worker.ts +++ b/packages/files/bin/worker.ts @@ -3,7 +3,7 @@ import 'reflect-metadata' import { OpenTelemetrySDK } from '@standardnotes/domain-events-infra' import { ServiceIdentifier } from '@standardnotes/domain-core' -const sdk = new OpenTelemetrySDK(ServiceIdentifier.NAMES.FilesWorker) +const sdk = new OpenTelemetrySDK({ serviceName: ServiceIdentifier.NAMES.FilesWorker }) sdk.start() import { Logger } from 'winston' diff --git a/packages/revisions/bin/server.ts b/packages/revisions/bin/server.ts index 30ce1f7f7..126c55876 100644 --- a/packages/revisions/bin/server.ts +++ b/packages/revisions/bin/server.ts @@ -3,7 +3,7 @@ import 'reflect-metadata' import { OpenTelemetrySDK } from '@standardnotes/domain-events-infra' import { ServiceIdentifier } from '@standardnotes/domain-core' -const sdk = new OpenTelemetrySDK(ServiceIdentifier.NAMES.Revisions) +const sdk = new OpenTelemetrySDK({ serviceName: ServiceIdentifier.NAMES.Revisions }) sdk.start() import * as cors from 'cors' diff --git a/packages/revisions/bin/worker.ts b/packages/revisions/bin/worker.ts index 8c8866812..b1f73ac27 100644 --- a/packages/revisions/bin/worker.ts +++ b/packages/revisions/bin/worker.ts @@ -3,7 +3,7 @@ import 'reflect-metadata' import { OpenTelemetrySDK } from '@standardnotes/domain-events-infra' import { ServiceIdentifier } from '@standardnotes/domain-core' -const sdk = new OpenTelemetrySDK(ServiceIdentifier.NAMES.RevisionsWorker) +const sdk = new OpenTelemetrySDK({ serviceName: ServiceIdentifier.NAMES.RevisionsWorker }) sdk.start() import { Logger } from 'winston' diff --git a/packages/scheduler/bin/verify.ts b/packages/scheduler/bin/verify.ts index ead49b339..c786824cd 100644 --- a/packages/scheduler/bin/verify.ts +++ b/packages/scheduler/bin/verify.ts @@ -3,7 +3,7 @@ import 'reflect-metadata' import { OpenTelemetrySDK, OpenTelemetryTracer } from '@standardnotes/domain-events-infra' import { ServiceIdentifier } from '@standardnotes/domain-core' -const sdk = new OpenTelemetrySDK(ServiceIdentifier.NAMES.SchedulerScheduledTask) +const sdk = new OpenTelemetrySDK({ serviceName: ServiceIdentifier.NAMES.SchedulerScheduledTask }) sdk.start() import { Logger } from 'winston' diff --git a/packages/scheduler/bin/worker.ts b/packages/scheduler/bin/worker.ts index 60d039feb..3d6b55aad 100644 --- a/packages/scheduler/bin/worker.ts +++ b/packages/scheduler/bin/worker.ts @@ -3,7 +3,7 @@ import 'reflect-metadata' import { OpenTelemetrySDK } from '@standardnotes/domain-events-infra' import { ServiceIdentifier } from '@standardnotes/domain-core' -const sdk = new OpenTelemetrySDK(ServiceIdentifier.NAMES.SchedulerWorker) +const sdk = new OpenTelemetrySDK({ serviceName: ServiceIdentifier.NAMES.SchedulerWorker }) sdk.start() import { Logger } from 'winston' diff --git a/packages/syncing-server/bin/server.ts b/packages/syncing-server/bin/server.ts index c83374e57..d4e08fb8d 100644 --- a/packages/syncing-server/bin/server.ts +++ b/packages/syncing-server/bin/server.ts @@ -3,7 +3,7 @@ import 'reflect-metadata' import { OpenTelemetrySDK } from '@standardnotes/domain-events-infra' import { ServiceIdentifier } from '@standardnotes/domain-core' -const sdk = new OpenTelemetrySDK(ServiceIdentifier.NAMES.SyncingServer) +const sdk = new OpenTelemetrySDK({ serviceName: ServiceIdentifier.NAMES.SyncingServer }) sdk.start() import '../src/Infra/InversifyExpressUtils/AnnotatedHealthCheckController' diff --git a/packages/syncing-server/bin/worker.ts b/packages/syncing-server/bin/worker.ts index c8620de85..bf9212fc3 100644 --- a/packages/syncing-server/bin/worker.ts +++ b/packages/syncing-server/bin/worker.ts @@ -3,7 +3,7 @@ import 'reflect-metadata' import { OpenTelemetrySDK } from '@standardnotes/domain-events-infra' import { ServiceIdentifier } from '@standardnotes/domain-core' -const sdk = new OpenTelemetrySDK(ServiceIdentifier.NAMES.SyncingServerWorker) +const sdk = new OpenTelemetrySDK({ serviceName: ServiceIdentifier.NAMES.SyncingServerWorker }) sdk.start() import { Logger } from 'winston' diff --git a/packages/websockets/bin/server.ts b/packages/websockets/bin/server.ts index 815338e88..9787383c5 100644 --- a/packages/websockets/bin/server.ts +++ b/packages/websockets/bin/server.ts @@ -3,7 +3,7 @@ import 'reflect-metadata' import { OpenTelemetrySDK } from '@standardnotes/domain-events-infra' import { ServiceIdentifier } from '@standardnotes/domain-core' -const sdk = new OpenTelemetrySDK(ServiceIdentifier.NAMES.Websockets) +const sdk = new OpenTelemetrySDK({ serviceName: ServiceIdentifier.NAMES.Websockets }) sdk.start() import '../src/Infra/InversifyExpressUtils/AnnotatedHealthCheckController' diff --git a/packages/websockets/bin/worker.ts b/packages/websockets/bin/worker.ts index 7f7e2a6cf..21478e77f 100644 --- a/packages/websockets/bin/worker.ts +++ b/packages/websockets/bin/worker.ts @@ -3,7 +3,7 @@ import 'reflect-metadata' import { OpenTelemetrySDK } from '@standardnotes/domain-events-infra' import { ServiceIdentifier } from '@standardnotes/domain-core' -const sdk = new OpenTelemetrySDK(ServiceIdentifier.NAMES.WebsocketsWorker) +const sdk = new OpenTelemetrySDK({ serviceName: ServiceIdentifier.NAMES.WebsocketsWorker }) sdk.start() import { Logger } from 'winston'