mirror of https://github.com/Chocobozzz/PeerTube
				
				
				
			
		
			
				
	
	
		
			25 lines
		
	
	
		
			640 B
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			640 B
		
	
	
	
		
			TypeScript
		
	
	
import { Meter } from '@opentelemetry/api'
 | 
						|
import { JobQueue } from '@server/lib/job-queue'
 | 
						|
 | 
						|
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 })
 | 
						|
        }
 | 
						|
      }
 | 
						|
    })
 | 
						|
  }
 | 
						|
 | 
						|
}
 |