You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
main
${ noResults }
25 lines
649 B
TypeScript
25 lines
649 B
TypeScript
import { Meter } from '@opentelemetry/api'
|
|||
import { JobQueue } from '@server/lib/job-queue/index.js'
|
|||
|
|||
export class JobQueueObserversBuilder {
|
|||
|
|||
constructor (private readonly meter: Meter) {
|
|||
|
|||
}
|
|||
|
|||
buildObservers () {
|
|||
this.meter.createObservableGauge('peertube_job_queue_total', {
|
|||
description: 'Total jobs in the PeerTube job queue'
|
|||
}).addCallback(async observableResult => {
|
|||
const stats = await JobQueue.Instance.getStats()
|
|||
|
|||
for (const { jobType, counts } of stats) {
|
|||
for (const state of Object.keys(counts)) {
|
|||
observableResult.observe(counts[state], { jobType, state })
|
|||
}
|
|||
}
|
|||
})
|
|||
}
|
|||
|
|||
}
|