Jelajahi Sumber

fix: reduce the amount of metrics gathered in telemetery

Karol Sójko 1 tahun lalu
induk
melakukan
32fe8d0a85

+ 1 - 1
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'

+ 1 - 1
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'

+ 1 - 1
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'

+ 1 - 1
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'

+ 1 - 1
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'

+ 1 - 1
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'

+ 1 - 1
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'

+ 1 - 1
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'

+ 1 - 1
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'

+ 1 - 1
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'

+ 13 - 6
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),

+ 1 - 1
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'

+ 1 - 1
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'

+ 1 - 1
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'

+ 1 - 1
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'

+ 1 - 1
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'

+ 1 - 1
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'

+ 1 - 1
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'

+ 1 - 1
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'

+ 1 - 1
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'

+ 1 - 1
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'