diff --git a/cmd/ipfs/daemon.go b/cmd/ipfs/daemon.go
index 4bda0128368a4de3ddb9cc2ffd5e549939f08845..5fe063c86a7778dce7424cf578b546a5c6ed43ee 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 ca95514b8ed3f863747dea81910125d6a92a8b45..7499b0e1d15984842087d25d42c859d94f2c90c3 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" '