]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/lib/opentelemetry/metric-helpers/viewers-observers-builder.ts
Merge branch 'release/5.0.0' into develop
[github/Chocobozzz/PeerTube.git] / server / lib / opentelemetry / metric-helpers / viewers-observers-builder.ts
1 import { Meter } from '@opentelemetry/api'
2 import { VideoScope, ViewerScope } from '@server/lib/views/shared'
3 import { VideoViewsManager } from '@server/lib/views/video-views-manager'
4
5 export class ViewersObserversBuilder {
6
7 constructor (private readonly meter: Meter) {
8
9 }
10
11 buildObservers () {
12 this.meter.createObservableGauge('peertube_viewers_total', {
13 description: 'Total viewers on the instance'
14 }).addCallback(observableResult => {
15 for (const viewerScope of [ 'local', 'remote' ] as ViewerScope[]) {
16 for (const videoScope of [ 'local', 'remote' ] as VideoScope[]) {
17 const result = VideoViewsManager.Instance.getTotalViewers({ viewerScope, videoScope })
18
19 observableResult.observe(result, { viewerOrigin: viewerScope, videoOrigin: videoScope })
20 }
21 }
22 })
23 }
24 }