diff --git a/cmd/shisui/main.go b/cmd/shisui/main.go index c320842ac98a..f0180c02591b 100644 --- a/cmd/shisui/main.go +++ b/cmd/shisui/main.go @@ -13,6 +13,7 @@ import ( "slices" "strings" "syscall" + "time" "os" @@ -22,6 +23,7 @@ import ( "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/internal/flags" "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/metrics" "github.com/ethereum/go-ethereum/p2p/discover" "github.com/ethereum/go-ethereum/p2p/discover/portalwire" "github.com/ethereum/go-ethereum/p2p/enode" @@ -78,11 +80,26 @@ var ( utils.PortalDataCapacityFlag, utils.PortalLogLevelFlag, } + metricsFlags = []cli.Flag{ + utils.MetricsEnabledFlag, + utils.MetricsHTTPFlag, + utils.MetricsPortFlag, + utils.MetricsEnableInfluxDBFlag, + utils.MetricsInfluxDBEndpointFlag, + utils.MetricsInfluxDBDatabaseFlag, + utils.MetricsInfluxDBUsernameFlag, + utils.MetricsInfluxDBPasswordFlag, + utils.MetricsInfluxDBTagsFlag, + utils.MetricsEnableInfluxDBV2Flag, + utils.MetricsInfluxDBTokenFlag, + utils.MetricsInfluxDBBucketFlag, + utils.MetricsInfluxDBOrganizationFlag, + } ) func init() { app.Action = shisui - app.Flags = flags.Merge(portalProtocolFlags, historyRpcFlags) + app.Flags = flags.Merge(portalProtocolFlags, historyRpcFlags, metricsFlags) flags.AutoEnvVars(app.Flags, "SHISUI") } @@ -96,6 +113,12 @@ func main() { func shisui(ctx *cli.Context) error { setDefaultLogger(ctx.Int(utils.PortalLogLevelFlag.Name)) + // Start metrics export if enabled + utils.SetupMetrics(ctx) + + // Start system runtime metrics collection + go metrics.CollectProcessMetrics(3 * time.Second) + config, err := getPortalConfig(ctx) if err != nil { return nil diff --git a/metrics/config.go b/metrics/config.go index 72f94dd194c9..435f84e85575 100644 --- a/metrics/config.go +++ b/metrics/config.go @@ -54,3 +54,23 @@ var DefaultConfig = Config{ InfluxDBBucket: "geth", InfluxDBOrganization: "geth", } + +// ShisuiDefaultConfig is the default config for metrics used in shisui. +var ShisuiDefaultConfig = Config{ + Enabled: false, + EnabledExpensive: false, + HTTP: "127.0.0.1", + Port: 6060, + EnableInfluxDB: false, + InfluxDBEndpoint: "http://localhost:8086", + InfluxDBDatabase: "shisui", + InfluxDBUsername: "test", + InfluxDBPassword: "test", + InfluxDBTags: "host=localhost", + + // influxdbv2-specific flags + EnableInfluxDBV2: false, + InfluxDBToken: "test", + InfluxDBBucket: "shisui", + InfluxDBOrganization: "shisui", +}