]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/lib/opentelemetry/metric-helpers/job-queue-observers-builder.ts
Update server dependencies
[github/Chocobozzz/PeerTube.git] / server / lib / opentelemetry / metric-helpers / job-queue-observers-builder.ts
1 import { Meter } from '@opentelemetry/api-metrics'
2 import { JobQueue } from '@server/lib/job-queue'
3
4 export class JobQueueObserversBuilder {
5
6 constructor (private readonly meter: Meter) {
7
8 }
9
10 buildObservers () {
11 this.meter.createObservableGauge('peertube_job_queue_total', {
12 description: 'Total jobs in the PeerTube job queue'
13 }).addCallback(async observableResult => {
14 const stats = await JobQueue.Instance.getStats()
15
16 for (const { jobType, counts } of stats) {
17 for (const state of Object.keys(counts)) {
18 observableResult.observe(counts[state], { jobType, state })
19 }
20 }
21 })
22 }
23
24 }