debian-forge-composer/internal/prometheus/status_metrics.go

30 lines
868 B
Go

package prometheus
import (
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
)
func StatusRequestsCounter(subsystem string) *prometheus.CounterVec {
// return a function so we can use this for both
// composer & worker metrics
reg := prometheus.NewRegistry()
counter := promauto.With(reg).NewCounterVec(prometheus.CounterOpts{
Name: "request_count",
Namespace: Namespace,
Subsystem: subsystem,
Help: "total number of http requests",
}, []string{"method", "path", "code", "subsystem", "tenant"})
err := prometheus.Register(counter)
if err != nil {
registered, ok := err.(prometheus.AlreadyRegisteredError)
if !ok {
panic(err)
}
// return existing counter if metrics already registered
return registered.ExistingCollector.(*prometheus.CounterVec)
}
return counter
}