diff --git a/cmd/ipfs/daemon.go b/cmd/ipfs/daemon.go index 4bda0128368..5fe063c86a7 100644 --- a/cmd/ipfs/daemon.go +++ b/cmd/ipfs/daemon.go @@ -181,6 +181,13 @@ func defaultMux(path string) corehttp.ServeOption { var fileDescriptorCheck = func() error { return nil } func daemonFunc(req cmds.Request, res cmds.Response) { + // Inject metrics before we do anything + + err := mprome.Inject() + if err != nil { + log.Errorf("Injecting prometheus handler for metrics failed with message: %s\n", err.Error()) + } + // let the user know we're going. fmt.Printf("Initializing daemon...\n") @@ -388,10 +395,6 @@ func daemonFunc(req cmds.Request, res cmds.Response) { } // initialize metrics collector - err = mprome.Inject() - if err != nil { - log.Warningf("Injecting prometheus handler for metrics failed with message: %s\n", err.Error()) - } prometheus.MustRegister(&corehttp.IpfsNodeCollector{Node: node}) fmt.Printf("Daemon is ready\n") diff --git a/test/sharness/t0600-issues-and-regressions-online.sh b/test/sharness/t0600-issues-and-regressions-online.sh index ca95514b8ed..7499b0e1d15 100755 --- a/test/sharness/t0600-issues-and-regressions-online.sh +++ b/test/sharness/t0600-issues-and-regressions-online.sh @@ -27,6 +27,12 @@ test_expect_success "no panic traces on daemon" ' test_must_fail grep "nil pointer dereference" daemon_err ' +test_expect_success "metrics work" ' + curl "$API_ADDR/debug/metrics/prometheus" > pro_data && + grep "ipfs_bs_cache_arc_hits_total" < pro_data || + test_fsh cat pro_data +' + test_kill_ipfs_daemon test_expect_success "ipfs daemon --offline --mount fails - #2995" '