]>
Commit | Line | Data |
---|---|---|
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 | } |