Skip to content

Commit b71279d

Browse files
authored
feat(metrics): allow changing influxdb interval ethereum#33767 (#2118)
1 parent 436166e commit b71279d

File tree

5 files changed

+37
-15
lines changed

5 files changed

+37
-15
lines changed

cmd/XDC/chaincmd.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ It expects the genesis file or the network name [ mainnet | testnet | devnet ] a
8080
utils.MetricsInfluxDBUsernameFlag,
8181
utils.MetricsInfluxDBPasswordFlag,
8282
utils.MetricsInfluxDBTagsFlag,
83+
utils.MetricsInfluxDBIntervalFlag,
8384
utils.MetricsInfluxDBTokenFlag,
8485
utils.MetricsInfluxDBBucketFlag,
8586
utils.MetricsInfluxDBOrganizationFlag,

cmd/XDC/config.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,12 @@ func applyMetricConfig(ctx *cli.Context, cfg *XDCConfig) {
300300
if ctx.IsSet(utils.MetricsInfluxDBTagsFlag.Name) {
301301
cfg.Metrics.InfluxDBTags = ctx.String(utils.MetricsInfluxDBTagsFlag.Name)
302302
}
303+
if ctx.IsSet(utils.MetricsInfluxDBIntervalFlag.Name) {
304+
cfg.Metrics.InfluxDBInterval = ctx.Duration(utils.MetricsInfluxDBIntervalFlag.Name)
305+
if cfg.Metrics.InfluxDBInterval <= 0 {
306+
utils.Fatalf("invalid metrics InfluxDB interval %v: must be greater than 0", cfg.Metrics.InfluxDBInterval)
307+
}
308+
}
303309
if ctx.IsSet(utils.MetricsEnableInfluxDBV2Flag.Name) {
304310
cfg.Metrics.EnableInfluxDBV2 = ctx.Bool(utils.MetricsEnableInfluxDBV2Flag.Name)
305311
}

cmd/XDC/main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ var (
180180
utils.MetricsInfluxDBUsernameFlag,
181181
utils.MetricsInfluxDBPasswordFlag,
182182
utils.MetricsInfluxDBTagsFlag,
183+
utils.MetricsInfluxDBIntervalFlag,
183184
utils.MetricsEnableInfluxDBV2Flag,
184185
utils.MetricsInfluxDBTokenFlag,
185186
utils.MetricsInfluxDBBucketFlag,

cmd/utils/flags.go

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -795,6 +795,13 @@ var (
795795
Category: flags.MetricsCategory,
796796
}
797797

798+
MetricsInfluxDBIntervalFlag = &cli.DurationFlag{
799+
Name: "metrics-influxdb-interval",
800+
Usage: "Interval between metrics reports to InfluxDB (with time unit, e.g. 10s)",
801+
Value: metrics.DefaultConfig.InfluxDBInterval,
802+
Category: flags.MetricsCategory,
803+
}
804+
798805
MetricsEnableInfluxDBV2Flag = &cli.BoolFlag{
799806
Name: "metrics-influxdbv2",
800807
Usage: "Enable metrics export/push to an external InfluxDB v2 database",
@@ -1692,14 +1699,17 @@ func SetupMetrics(cfg *metrics.Config) {
16921699
bucket = cfg.InfluxDBBucket
16931700
organization = cfg.InfluxDBOrganization
16941701
tagsMap = SplitTagsFlag(cfg.InfluxDBTags)
1702+
interval = cfg.InfluxDBInterval
16951703
)
1704+
if (enableExport || enableExportV2) && interval <= 0 {
1705+
Fatalf("Invalid InfluxDB metrics interval %v, must be > 0", interval)
1706+
}
16961707
if enableExport {
1697-
log.Info("Enabling metrics export to InfluxDB")
1698-
go influxdb.InfluxDBWithTags(metrics.DefaultRegistry, 10*time.Second, endpoint, database, username, password, "geth.", tagsMap)
1708+
log.Info("Enabling metrics export to InfluxDB", "interval", interval)
1709+
go influxdb.InfluxDBWithTags(metrics.DefaultRegistry, interval, endpoint, database, username, password, "geth.", tagsMap)
16991710
} else if enableExportV2 {
1700-
tagsMap := SplitTagsFlag(cfg.InfluxDBTags)
1701-
log.Info("Enabling metrics export to InfluxDB (v2)")
1702-
go influxdb.InfluxDBV2WithTags(metrics.DefaultRegistry, 10*time.Second, endpoint, token, bucket, organization, "geth.", tagsMap)
1711+
log.Info("Enabling metrics export to InfluxDB (v2)", "interval", interval)
1712+
go influxdb.InfluxDBV2WithTags(metrics.DefaultRegistry, interval, endpoint, token, bucket, organization, "geth.", tagsMap)
17031713
}
17041714

17051715
// Expvar exporter.

metrics/config.go

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,21 @@
1616

1717
package metrics
1818

19+
import "time"
20+
1921
// Config contains the configuration for the metric collection.
2022
type Config struct {
21-
Enabled bool `toml:",omitempty"`
22-
EnabledExpensive bool `toml:"-"`
23-
HTTP string `toml:",omitempty"`
24-
Port int `toml:",omitempty"`
25-
EnableInfluxDB bool `toml:",omitempty"`
26-
InfluxDBEndpoint string `toml:",omitempty"`
27-
InfluxDBDatabase string `toml:",omitempty"`
28-
InfluxDBUsername string `toml:",omitempty"`
29-
InfluxDBPassword string `toml:",omitempty"`
30-
InfluxDBTags string `toml:",omitempty"`
23+
Enabled bool `toml:",omitempty"`
24+
EnabledExpensive bool `toml:"-"`
25+
HTTP string `toml:",omitempty"`
26+
Port int `toml:",omitempty"`
27+
EnableInfluxDB bool `toml:",omitempty"`
28+
InfluxDBEndpoint string `toml:",omitempty"`
29+
InfluxDBDatabase string `toml:",omitempty"`
30+
InfluxDBUsername string `toml:",omitempty"`
31+
InfluxDBPassword string `toml:",omitempty"`
32+
InfluxDBTags string `toml:",omitempty"`
33+
InfluxDBInterval time.Duration `toml:",omitempty"`
3134

3235
EnableInfluxDBV2 bool `toml:",omitempty"`
3336
InfluxDBToken string `toml:",omitempty"`
@@ -47,6 +50,7 @@ var DefaultConfig = Config{
4750
InfluxDBUsername: "test",
4851
InfluxDBPassword: "test",
4952
InfluxDBTags: "host=localhost",
53+
InfluxDBInterval: 10 * time.Second,
5054

5155
// influxdbv2-specific flags
5256
EnableInfluxDBV2: false,

0 commit comments

Comments
 (0)