]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/lib/opentelemetry/metric-helpers/nodejs-observers-builder.ts
Bumped to version v5.2.1
[github/Chocobozzz/PeerTube.git] / server / lib / opentelemetry / metric-helpers / nodejs-observers-builder.ts
index 766cbe03be0b03b5bda73eda9db0a0ea1d061cac..8ed219e9e472fe3b85523cf52ebbd7f5bc5284f6 100644 (file)
@@ -1,9 +1,9 @@
 import { readdir } from 'fs-extra'
-import { constants, PerformanceObserver } from 'perf_hooks'
+import { constants, NodeGCPerformanceDetail, PerformanceObserver } from 'perf_hooks'
 import * as process from 'process'
-import { Meter, ObservableResult } from '@opentelemetry/api-metrics'
-import { ExplicitBucketHistogramAggregation, MeterProvider } from '@opentelemetry/sdk-metrics-base'
-import { View } from '@opentelemetry/sdk-metrics-base/build/src/view/View'
+import { Meter, ObservableResult } from '@opentelemetry/api'
+import { ExplicitBucketHistogramAggregation } from '@opentelemetry/sdk-metrics'
+import { View } from '@opentelemetry/sdk-metrics/build/src/view/View'
 import { logger } from '@server/helpers/logger'
 
 // Thanks to https://github.com/siimon/prom-client
@@ -12,7 +12,16 @@ import { logger } from '@server/helpers/logger'
 
 export class NodeJSObserversBuilder {
 
-  constructor (private readonly meter: Meter, private readonly meterProvider: MeterProvider) {
+  constructor (private readonly meter: Meter) {
+  }
+
+  static getViews () {
+    return [
+      new View({
+        aggregation: new ExplicitBucketHistogramAggregation([ 0.001, 0.01, 0.1, 1, 2, 5 ]),
+        instrumentName: 'nodejs_gc_duration_seconds'
+      })
+    ]
   }
 
   buildObservers () {
@@ -91,11 +100,6 @@ export class NodeJSObserversBuilder {
       [constants.NODE_PERFORMANCE_GC_WEAKCB]: 'weakcb'
     }
 
-    this.meterProvider.addView(
-      new View({ aggregation: new ExplicitBucketHistogramAggregation([ 0.001, 0.01, 0.1, 1, 2, 5 ]) }),
-      { instrument: { name: 'nodejs_gc_duration_seconds' } }
-    )
-
     const histogram = this.meter.createHistogram('nodejs_gc_duration_seconds', {
       description: 'Garbage collection duration by kind, one of major, minor, incremental or weakcb'
     })
@@ -106,9 +110,9 @@ export class NodeJSObserversBuilder {
       // Node < 16 uses entry.kind
       // Node >= 16 uses entry.detail.kind
       // See: https://nodejs.org/docs/latest-v16.x/api/deprecations.html#deprecations_dep0152_extension_performanceentry_properties
-      const kind = (entry as any).detail
-        ? kinds[(entry as any).detail.kind]
-        : kinds[entry.kind]
+      const kind = entry.detail
+        ? kinds[(entry.detail as NodeGCPerformanceDetail).kind]
+        : kinds[(entry as any).kind]
 
       // Convert duration from milliseconds to seconds
       histogram.record(entry.duration / 1000, {