X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/d6e1bfee59569d79f0f3e24620280e70aa161403..0be45d32255d83c410aad4e34560c478917ee6c4:/sdk/go/httpserver/metrics.go diff --git a/sdk/go/httpserver/metrics.go b/sdk/go/httpserver/metrics.go index 77525a80f1..b52068e957 100644 --- a/sdk/go/httpserver/metrics.go +++ b/sdk/go/httpserver/metrics.go @@ -99,10 +99,17 @@ func (m *metrics) ServeAPI(next http.Handler) http.Handler { // For the metrics to be accurate, the caller must ensure every // request passed to the Handler also passes through // LogRequests(logger, ...), and vice versa. -func Instrument(logger *logrus.Logger, next http.Handler) Handler { +// +// If registry is nil, a new registry is created. +// +// If logger is nil, logrus.StandardLogger() is used. +func Instrument(registry *prometheus.Registry, logger *logrus.Logger, next http.Handler) Handler { if logger == nil { logger = logrus.StandardLogger() } + if registry == nil { + registry = prometheus.NewRegistry() + } reqDuration := prometheus.NewSummaryVec(prometheus.SummaryOpts{ Name: "request_duration_seconds", Help: "Summary of request duration.", @@ -111,7 +118,6 @@ func Instrument(logger *logrus.Logger, next http.Handler) Handler { Name: "time_to_status_seconds", Help: "Summary of request TTFB.", }, []string{"code", "method"}) - registry := prometheus.NewRegistry() registry.MustRegister(timeToStatus) registry.MustRegister(reqDuration) m := &metrics{