check / check (push) Successful in 4m2s
The HTTP metrics recorder, the delivery collectors and the Go and process collectors now register on one prometheus.Registry that fx provides, instead of Prometheus's global default registry, and /metrics serves that registry. A second metrics-enabled router in one process, or the server tests run with -count=2, no longer panics on a duplicate registration. The middleware builds its recorder once, in New, so installing Metrics() on more than one router over the same graph is also safe. The scrape keeps the same series and labels, including go_*, process_* and promhttp_metric_handler_*. Model: opus-5-5
21 lines
596 B
Go
21 lines
596 B
Go
package handlers
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/prometheus/client_golang/prometheus/promhttp"
|
|
)
|
|
|
|
// HandleMetrics returns the Prometheus scrape handler for the
|
|
// registry every collector in this process registers on. It is what
|
|
// promhttp.Handler builds for the global default registry, including
|
|
// the promhttp_metric_handler_* series that count scrapes, pointed at
|
|
// that registry instead.
|
|
func (s *Handlers) HandleMetrics() http.HandlerFunc {
|
|
reg := s.params.Registry
|
|
|
|
return promhttp.InstrumentMetricHandler(
|
|
reg, promhttp.HandlerFor(reg, promhttp.HandlerOpts{}),
|
|
).ServeHTTP
|
|
}
|