spegel/pkg/metrics/metrics.go
Philip Laine fdf96eee4b
Rename package mux to httpx and refactor http helpers
Signed-off-by: Philip Laine <philip.laine@gmail.com>
2025-05-23 13:42:22 +02:00

55 lines
2.0 KiB
Go

package metrics
import (
"github.com/prometheus/client_golang/prometheus"
"github.com/spegel-org/spegel/pkg/httpx"
)
var (
// DefaultRegisterer and DefaultGatherer are the implementations of the
// prometheus Registerer and Gatherer interfaces that all metrics operations
// will use. They are variables so that packages that embed this library can
// replace them at runtime, instead of having to pass around specific
// registries.
DefaultRegisterer = prometheus.DefaultRegisterer
DefaultGatherer = prometheus.DefaultGatherer
)
var (
MirrorRequestsTotal = prometheus.NewCounterVec(prometheus.CounterOpts{
Name: "spegel_mirror_requests_total",
Help: "Total number of mirror requests.",
}, []string{"registry", "cache"})
ResolveDurHistogram = prometheus.NewHistogramVec(prometheus.HistogramOpts{
Name: "spegel_resolve_duration_seconds",
Help: "The duration for router to resolve a peer.",
}, []string{"router"})
AdvertisedImages = prometheus.NewGaugeVec(prometheus.GaugeOpts{
Name: "spegel_advertised_images",
Help: "Number of images advertised to be available.",
}, []string{"registry"})
AdvertisedImageTags = prometheus.NewGaugeVec(prometheus.GaugeOpts{
Name: "spegel_advertised_image_tags",
Help: "Number of image tags advertised to be available.",
}, []string{"registry"})
AdvertisedImageDigests = prometheus.NewGaugeVec(prometheus.GaugeOpts{
Name: "spegel_advertised_image_digests",
Help: "Number of image digests advertised to be available.",
}, []string{"registry"})
AdvertisedKeys = prometheus.NewGaugeVec(prometheus.GaugeOpts{
Name: "spegel_advertised_keys",
Help: "Number of keys advertised to be available.",
}, []string{"registry"})
)
func Register() {
DefaultRegisterer.MustRegister(MirrorRequestsTotal)
DefaultRegisterer.MustRegister(ResolveDurHistogram)
DefaultRegisterer.MustRegister(AdvertisedImages)
DefaultRegisterer.MustRegister(AdvertisedImageTags)
DefaultRegisterer.MustRegister(AdvertisedImageDigests)
DefaultRegisterer.MustRegister(AdvertisedKeys)
httpx.RegisterMetrics(DefaultRegisterer)
}