aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/lib/opentelemetry/metric-helpers/playback-metrics.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/lib/opentelemetry/metric-helpers/playback-metrics.ts')
-rw-r--r--server/lib/opentelemetry/metric-helpers/playback-metrics.ts85
1 files changed, 0 insertions, 85 deletions
diff --git a/server/lib/opentelemetry/metric-helpers/playback-metrics.ts b/server/lib/opentelemetry/metric-helpers/playback-metrics.ts
deleted file mode 100644
index 1eb08b5a6..000000000
--- a/server/lib/opentelemetry/metric-helpers/playback-metrics.ts
+++ /dev/null
@@ -1,85 +0,0 @@
1import { Counter, Meter } from '@opentelemetry/api'
2import { MVideoImmutable } from '@server/types/models'
3import { PlaybackMetricCreate } from '@shared/models'
4
5export class PlaybackMetrics {
6 private errorsCounter: Counter
7 private resolutionChangesCounter: Counter
8
9 private downloadedBytesP2PCounter: Counter
10 private uploadedBytesP2PCounter: Counter
11
12 private downloadedBytesHTTPCounter: Counter
13
14 private peersP2PPeersGaugeBuffer: {
15 value: number
16 attributes: any
17 }[] = []
18
19 constructor (private readonly meter: Meter) {
20
21 }
22
23 buildCounters () {
24 this.errorsCounter = this.meter.createCounter('peertube_playback_errors_count', {
25 description: 'Errors collected from PeerTube player.'
26 })
27
28 this.resolutionChangesCounter = this.meter.createCounter('peertube_playback_resolution_changes_count', {
29 description: 'Resolution changes collected from PeerTube player.'
30 })
31
32 this.downloadedBytesHTTPCounter = this.meter.createCounter('peertube_playback_http_downloaded_bytes', {
33 description: 'Downloaded bytes with HTTP by PeerTube player.'
34 })
35 this.downloadedBytesP2PCounter = this.meter.createCounter('peertube_playback_p2p_downloaded_bytes', {
36 description: 'Downloaded bytes with P2P by PeerTube player.'
37 })
38
39 this.uploadedBytesP2PCounter = this.meter.createCounter('peertube_playback_p2p_uploaded_bytes', {
40 description: 'Uploaded bytes with P2P by PeerTube player.'
41 })
42
43 this.meter.createObservableGauge('peertube_playback_p2p_peers', {
44 description: 'Total P2P peers connected to the PeerTube player.'
45 }).addCallback(observableResult => {
46 for (const gauge of this.peersP2PPeersGaugeBuffer) {
47 observableResult.observe(gauge.value, gauge.attributes)
48 }
49
50 this.peersP2PPeersGaugeBuffer = []
51 })
52 }
53
54 observe (video: MVideoImmutable, metrics: PlaybackMetricCreate) {
55 const attributes = {
56 videoOrigin: video.remote
57 ? 'remote'
58 : 'local',
59
60 playerMode: metrics.playerMode,
61
62 resolution: metrics.resolution + '',
63 fps: metrics.fps + '',
64
65 p2pEnabled: metrics.p2pEnabled,
66
67 videoUUID: video.uuid
68 }
69
70 this.errorsCounter.add(metrics.errors, attributes)
71 this.resolutionChangesCounter.add(metrics.resolutionChanges, attributes)
72
73 this.downloadedBytesHTTPCounter.add(metrics.downloadedBytesHTTP, attributes)
74 this.downloadedBytesP2PCounter.add(metrics.downloadedBytesP2P, attributes)
75
76 this.uploadedBytesP2PCounter.add(metrics.uploadedBytesP2P, attributes)
77
78 if (metrics.p2pPeers) {
79 this.peersP2PPeersGaugeBuffer.push({
80 value: metrics.p2pPeers,
81 attributes
82 })
83 }
84 }
85}