diff --git a/cmd/ipfs/daemon.go b/cmd/ipfs/daemon.go index ad0f227f319..b916391a4dd 100644 --- a/cmd/ipfs/daemon.go +++ b/cmd/ipfs/daemon.go @@ -338,6 +338,7 @@ func serveHTTPApi(req cmds.Request) (error, <-chan error) { }, }) var opts = []corehttp.ServeOption{ + corehttp.PrometheusCollectorOption("api"), corehttp.CommandsOption(*req.InvocContext()), corehttp.WebUIOption, apiGw.ServeOption(), @@ -416,6 +417,7 @@ func serveHTTPGateway(req cmds.Request) (error, <-chan error) { } var opts = []corehttp.ServeOption{ + corehttp.PrometheusCollectorOption("gateway"), corehttp.CommandsROOption(*req.InvocContext()), corehttp.VersionOption(), corehttp.IPNSHostnameOption(), diff --git a/core/corehttp/prometheus.go b/core/corehttp/prometheus.go index 0642c04b512..2605e6cbeb8 100644 --- a/core/corehttp/prometheus.go +++ b/core/corehttp/prometheus.go @@ -11,7 +11,15 @@ import ( func PrometheusOption(path string) ServeOption { return func(n *core.IpfsNode, _ net.Listener, mux *http.ServeMux) (*http.ServeMux, error) { - mux.Handle(path, prom.Handler()) + mux.Handle(path, prom.UninstrumentedHandler()) return mux, nil } } + +func PrometheusCollectorOption(handlerName string) ServeOption { + return func(_ *core.IpfsNode, _ net.Listener, mux *http.ServeMux) (*http.ServeMux, error) { + childMux := http.NewServeMux() + mux.HandleFunc("/", prom.InstrumentHandler(handlerName, childMux)) + return childMux, nil + } +}