cmd: --metrics.statesize

Signed-off-by: jsvisa <delweng@gmail.com>
This commit is contained in:
jsvisa 2025-08-20 12:38:50 +00:00 committed by Gary Rong
parent 64cfce5b5d
commit 6f7c81ff71
4 changed files with 20 additions and 1 deletions

View file

@ -209,7 +209,7 @@ func constructDevModeBanner(ctx *cli.Context, cfg gethConfig) string {
0x%x (10^49 ETH) 0x%x (10^49 ETH)
`, cfg.Eth.Miner.PendingFeeRecipient) `, cfg.Eth.Miner.PendingFeeRecipient)
if cfg.Eth.Miner.PendingFeeRecipient == utils.DeveloperAddr { if cfg.Eth.Miner.PendingFeeRecipient == utils.DeveloperAddr {
devModeBanner += fmt.Sprintf(` devModeBanner += fmt.Sprintf(`
Private Key Private Key
------------------ ------------------
0x%x 0x%x
@ -375,6 +375,9 @@ func applyMetricConfig(ctx *cli.Context, cfg *gethConfig) {
if ctx.IsSet(utils.MetricsInfluxDBOrganizationFlag.Name) { if ctx.IsSet(utils.MetricsInfluxDBOrganizationFlag.Name) {
cfg.Metrics.InfluxDBOrganization = ctx.String(utils.MetricsInfluxDBOrganizationFlag.Name) cfg.Metrics.InfluxDBOrganization = ctx.String(utils.MetricsInfluxDBOrganizationFlag.Name)
} }
if ctx.IsSet(utils.MetricsStateSizeFlag.Name) {
cfg.Metrics.EnableStateSizeTracking = ctx.Bool(utils.MetricsStateSizeFlag.Name)
}
// Sanity-check the commandline flags. It is fine if some unused fields is part // Sanity-check the commandline flags. It is fine if some unused fields is part
// of the toml-config, but we expect the commandline to only contain relevant // of the toml-config, but we expect the commandline to only contain relevant
// arguments, otherwise it indicates an error. // arguments, otherwise it indicates an error.

View file

@ -200,6 +200,7 @@ var (
utils.MetricsInfluxDBTokenFlag, utils.MetricsInfluxDBTokenFlag,
utils.MetricsInfluxDBBucketFlag, utils.MetricsInfluxDBBucketFlag,
utils.MetricsInfluxDBOrganizationFlag, utils.MetricsInfluxDBOrganizationFlag,
utils.MetricsStateSizeFlag,
} }
) )

View file

@ -966,6 +966,13 @@ Please note that --` + MetricsHTTPFlag.Name + ` must be set to start the server.
Value: metrics.DefaultConfig.InfluxDBOrganization, Value: metrics.DefaultConfig.InfluxDBOrganization,
Category: flags.MetricsCategory, Category: flags.MetricsCategory,
} }
MetricsStateSizeFlag = &cli.BoolFlag{
Name: "metrics.statesize",
Usage: "Enable state size tracking for metrics collection",
Value: metrics.DefaultConfig.EnableStateSizeTracking,
Category: flags.MetricsCategory,
}
) )
var ( var (
@ -2218,6 +2225,10 @@ func MakeChain(ctx *cli.Context, stack *node.Node, readonly bool) (*core.BlockCh
} else if ctx.IsSet(CacheFlag.Name) || ctx.IsSet(CacheSnapshotFlag.Name) { } else if ctx.IsSet(CacheFlag.Name) || ctx.IsSet(CacheSnapshotFlag.Name) {
options.SnapshotLimit = ctx.Int(CacheFlag.Name) * ctx.Int(CacheSnapshotFlag.Name) / 100 options.SnapshotLimit = ctx.Int(CacheFlag.Name) * ctx.Int(CacheSnapshotFlag.Name) / 100
} }
if ctx.Bool(MetricsStateSizeFlag.Name) {
log.Info("Enabling state size tracking")
options.EnableStateSizeTracking = true
}
// If we're in readonly, do not bother generating snapshot data. // If we're in readonly, do not bother generating snapshot data.
if readonly { if readonly {
options.SnapshotNoBuild = true options.SnapshotNoBuild = true

View file

@ -33,6 +33,8 @@ type Config struct {
InfluxDBToken string `toml:",omitempty"` InfluxDBToken string `toml:",omitempty"`
InfluxDBBucket string `toml:",omitempty"` InfluxDBBucket string `toml:",omitempty"`
InfluxDBOrganization string `toml:",omitempty"` InfluxDBOrganization string `toml:",omitempty"`
EnableStateSizeTracking bool `toml:",omitempty"`
} }
// DefaultConfig is the default config for metrics used in go-ethereum. // DefaultConfig is the default config for metrics used in go-ethereum.
@ -53,4 +55,6 @@ var DefaultConfig = Config{
InfluxDBToken: "test", InfluxDBToken: "test",
InfluxDBBucket: "geth", InfluxDBBucket: "geth",
InfluxDBOrganization: "geth", InfluxDBOrganization: "geth",
EnableStateSizeTracking: false,
} }