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 }