diff --git a/cmd/geth/config.go b/cmd/geth/config.go index 2761ee7453..ddb5b5e1ff 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -145,7 +145,7 @@ func loadBaseConfig(ctx *cli.Context) gethConfig { } // makeConfigNode loads geth configuration and creates a blank node instance. -func makeConfigNode(ctx *cli.Context) (*node.Node, gethConfig) { +func makeConfigNode(ctx *cli.Context) (*node.Node, *gethConfig) { cfg := loadBaseConfig(ctx) stack, err := node.New(&cfg.Node) if err != nil { @@ -162,12 +162,11 @@ func makeConfigNode(ctx *cli.Context) (*node.Node, gethConfig) { } applyMetricConfig(ctx, &cfg) - return stack, cfg + return stack, &cfg } // makeFullNode loads geth configuration and creates the Ethereum backend. -func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) { - stack, cfg := makeConfigNode(ctx) +func makeFullNode(ctx *cli.Context, stack *node.Node, cfg *gethConfig) ethapi.Backend { if ctx.IsSet(utils.OverrideCancun.Name) { v := ctx.Uint64(utils.OverrideCancun.Name) cfg.Eth.OverrideCancun = &v @@ -225,7 +224,7 @@ func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) { utils.Fatalf("failed to register catalyst service: %v", err) } } - return stack, backend + return backend } // dumpConfig is the dumpconfig command. diff --git a/cmd/geth/consolecmd.go b/cmd/geth/consolecmd.go index 526ede9619..abe684b669 100644 --- a/cmd/geth/consolecmd.go +++ b/cmd/geth/consolecmd.go @@ -70,7 +70,9 @@ JavaScript API. See https://geth.ethereum.org/docs/interacting-with-geth/javascr func localConsole(ctx *cli.Context) error { // Create and start the node based on the CLI flags prepare(ctx) - stack, backend := makeFullNode(ctx) + stack, cfg := makeConfigNode(ctx) + utils.SetupMetricsFromConfig(&cfg.Metrics) + backend := makeFullNode(ctx, stack, cfg) startNode(ctx, stack, backend, true) defer stack.Close() diff --git a/cmd/geth/main.go b/cmd/geth/main.go index 09730a7716..a1686c9f73 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -37,7 +37,6 @@ import ( "github.com/ethereum/go-ethereum/internal/ethapi" "github.com/ethereum/go-ethereum/internal/flags" "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/metrics" "github.com/ethereum/go-ethereum/node" "go.uber.org/automaxprocs/maxprocs" @@ -316,12 +315,6 @@ func prepare(ctx *cli.Context) { log.Info("Dropping default light client cache", "provided", ctx.Int(utils.CacheFlag.Name), "updated", 128) ctx.Set(utils.CacheFlag.Name, strconv.Itoa(128)) } - - // Start metrics export if enabled - utils.SetupMetrics(ctx) - - // Start system runtime metrics collection - go metrics.CollectProcessMetrics(3 * time.Second) } // geth is the main entry point into the system if no special subcommand is run. @@ -333,7 +326,9 @@ func geth(ctx *cli.Context) error { } prepare(ctx) - stack, backend := makeFullNode(ctx) + stack, cfg := makeConfigNode(ctx) + utils.SetupMetricsFromConfig(&cfg.Metrics) + backend := makeFullNode(ctx, stack, cfg) defer stack.Close() startNode(ctx, stack, backend, false) diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 5751ec5d77..8655c3356f 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -2081,6 +2081,9 @@ func SetupMetricsFromConfig(c *metrics.Config) { } else if c.Port != 0 { log.Warn("influxdb.port specified without inflxdb.addr, metrics server will not start.") } + + // Start system runtime metrics collection + go metrics.CollectProcessMetrics(3 * time.Second) } func SplitTagsFlag(tagsFlag string) map[string]string {