From adc94cf09c86112051f72055852efcc977e4a04a Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 27 Jul 2022 16:19:25 +0200 Subject: Add live and viewers otel metrics --- .../metric-helpers/viewers-observers-builder.ts | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 server/lib/opentelemetry/metric-helpers/viewers-observers-builder.ts (limited to 'server/lib/opentelemetry/metric-helpers/viewers-observers-builder.ts') diff --git a/server/lib/opentelemetry/metric-helpers/viewers-observers-builder.ts b/server/lib/opentelemetry/metric-helpers/viewers-observers-builder.ts new file mode 100644 index 000000000..634e5bbc9 --- /dev/null +++ b/server/lib/opentelemetry/metric-helpers/viewers-observers-builder.ts @@ -0,0 +1,24 @@ +import { Meter } from '@opentelemetry/api-metrics' +import { VideoScope, ViewerScope } from '@server/lib/views/shared' +import { VideoViewsManager } from '@server/lib/views/video-views-manager' + +export class ViewersObserversBuilder { + + constructor (private readonly meter: Meter) { + + } + + buildObservers () { + this.meter.createObservableGauge('peertube_viewers_total', { + description: 'Total viewers on the instance' + }).addCallback(observableResult => { + for (const viewerScope of [ 'local', 'remote' ] as ViewerScope[]) { + for (const videoScope of [ 'local', 'remote' ] as VideoScope[]) { + const result = VideoViewsManager.Instance.getTotalViewers({ viewerScope, videoScope }) + + observableResult.observe(result, { viewerOrigin: viewerScope, videoOrigin: videoScope }) + } + } + }) + } +} -- cgit v1.2.3