]>
Commit | Line | Data |
---|---|---|
077600e0 | 1 | import { Meter } from '@opentelemetry/api' |
adc94cf0 C |
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 | } |