|
|
@@ -30,6 +30,7 @@ import (
|
|
|
"github.com/ethereum/go-ethereum/eth"
|
|
|
"github.com/ethereum/go-ethereum/internal/ethapi"
|
|
|
"github.com/ethereum/go-ethereum/log"
|
|
|
+ "github.com/ethereum/go-ethereum/metrics"
|
|
|
"github.com/ethereum/go-ethereum/node"
|
|
|
"github.com/ethereum/go-ethereum/params"
|
|
|
"github.com/naoina/toml"
|
|
|
@@ -88,6 +89,7 @@ type gethConfig struct {
|
|
|
Shh whisperDeprecatedConfig
|
|
|
Node node.Config
|
|
|
Ethstats ethstatsConfig
|
|
|
+ Metrics metrics.Config
|
|
|
}
|
|
|
|
|
|
func loadConfig(file string, cfg *gethConfig) error {
|
|
|
@@ -119,8 +121,9 @@ func defaultNodeConfig() node.Config {
|
|
|
func makeConfigNode(ctx *cli.Context) (*node.Node, gethConfig) {
|
|
|
// Load defaults.
|
|
|
cfg := gethConfig{
|
|
|
- Eth: eth.DefaultConfig,
|
|
|
- Node: defaultNodeConfig(),
|
|
|
+ Eth: eth.DefaultConfig,
|
|
|
+ Node: defaultNodeConfig(),
|
|
|
+ Metrics: metrics.DefaultConfig,
|
|
|
}
|
|
|
|
|
|
// Load config file.
|
|
|
@@ -133,7 +136,6 @@ func makeConfigNode(ctx *cli.Context) (*node.Node, gethConfig) {
|
|
|
log.Warn("Deprecated whisper config detected. Whisper has been moved to github.com/ethereum/whisper")
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
// Apply flags.
|
|
|
utils.SetNodeConfig(ctx, &cfg.Node)
|
|
|
stack, err := node.New(&cfg.Node)
|
|
|
@@ -146,6 +148,8 @@ func makeConfigNode(ctx *cli.Context) (*node.Node, gethConfig) {
|
|
|
}
|
|
|
utils.SetShhConfig(ctx, stack)
|
|
|
|
|
|
+ applyMetricConfig(ctx, &cfg)
|
|
|
+
|
|
|
return stack, cfg
|
|
|
}
|
|
|
|
|
|
@@ -204,3 +208,36 @@ func dumpConfig(ctx *cli.Context) error {
|
|
|
|
|
|
return nil
|
|
|
}
|
|
|
+
|
|
|
+func applyMetricConfig(ctx *cli.Context, cfg *gethConfig) {
|
|
|
+ if ctx.GlobalIsSet(utils.MetricsEnabledFlag.Name) {
|
|
|
+ cfg.Metrics.Enabled = ctx.GlobalBool(utils.MetricsEnabledFlag.Name)
|
|
|
+ }
|
|
|
+ if ctx.GlobalIsSet(utils.MetricsEnabledExpensiveFlag.Name) {
|
|
|
+ cfg.Metrics.EnabledExpensive = ctx.GlobalBool(utils.MetricsEnabledExpensiveFlag.Name)
|
|
|
+ }
|
|
|
+ if ctx.GlobalIsSet(utils.MetricsHTTPFlag.Name) {
|
|
|
+ cfg.Metrics.HTTP = ctx.GlobalString(utils.MetricsHTTPFlag.Name)
|
|
|
+ }
|
|
|
+ if ctx.GlobalIsSet(utils.MetricsPortFlag.Name) {
|
|
|
+ cfg.Metrics.Port = ctx.GlobalInt(utils.MetricsPortFlag.Name)
|
|
|
+ }
|
|
|
+ if ctx.GlobalIsSet(utils.MetricsEnableInfluxDBFlag.Name) {
|
|
|
+ cfg.Metrics.EnableInfluxDB = ctx.GlobalBool(utils.MetricsEnableInfluxDBFlag.Name)
|
|
|
+ }
|
|
|
+ if ctx.GlobalIsSet(utils.MetricsInfluxDBEndpointFlag.Name) {
|
|
|
+ cfg.Metrics.InfluxDBEndpoint = ctx.GlobalString(utils.MetricsInfluxDBEndpointFlag.Name)
|
|
|
+ }
|
|
|
+ if ctx.GlobalIsSet(utils.MetricsInfluxDBDatabaseFlag.Name) {
|
|
|
+ cfg.Metrics.InfluxDBDatabase = ctx.GlobalString(utils.MetricsInfluxDBDatabaseFlag.Name)
|
|
|
+ }
|
|
|
+ if ctx.GlobalIsSet(utils.MetricsInfluxDBUsernameFlag.Name) {
|
|
|
+ cfg.Metrics.InfluxDBUsername = ctx.GlobalString(utils.MetricsInfluxDBUsernameFlag.Name)
|
|
|
+ }
|
|
|
+ if ctx.GlobalIsSet(utils.MetricsInfluxDBPasswordFlag.Name) {
|
|
|
+ cfg.Metrics.InfluxDBPassword = ctx.GlobalString(utils.MetricsInfluxDBPasswordFlag.Name)
|
|
|
+ }
|
|
|
+ if ctx.GlobalIsSet(utils.MetricsInfluxDBTagsFlag.Name) {
|
|
|
+ cfg.Metrics.InfluxDBTags = ctx.GlobalString(utils.MetricsInfluxDBTagsFlag.Name)
|
|
|
+ }
|
|
|
+}
|