github.com/cozy/cozy-stack@v0.0.0-20240603063001-31110fa4cae1/model/job/metrics.go (about)

     1  package job
     2  
     3  import "github.com/prometheus/client_golang/prometheus"
     4  
     5  type workersQueuesCollector struct {
     6  	prometheus.Desc
     7  }
     8  
     9  func newWorkersQueuesCollector() prometheus.Collector {
    10  	desc := prometheus.NewDesc(
    11  		prometheus.BuildFQName("workers", "queues", "len"),
    12  		`Len of the workers queues by worker type`,
    13  		[]string{"worker_type"},
    14  		prometheus.Labels{},
    15  	)
    16  	return &workersQueuesCollector{*desc}
    17  }
    18  
    19  func (i *workersQueuesCollector) Describe(ch chan<- *prometheus.Desc) {
    20  	ch <- &i.Desc
    21  }
    22  
    23  func (i *workersQueuesCollector) Collect(ch chan<- prometheus.Metric) {
    24  	broker := globalJobSystem
    25  	for _, workerType := range broker.WorkersTypes() {
    26  		count, err := broker.WorkerQueueLen(workerType)
    27  		if err != nil {
    28  			continue
    29  		}
    30  		ch <- prometheus.MustNewConstMetric(
    31  			&i.Desc, prometheus.GaugeValue, float64(count),
    32  			workerType,
    33  		)
    34  	}
    35  }
    36  
    37  func init() {
    38  	prometheus.MustRegister(newWorkersQueuesCollector())
    39  }