mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 02:42:27 +00:00
cmd, swarm/metrics: export SplitTagsFlag, remove references to InfluxDBHostTag
This commit is contained in:
parent
454d6dd375
commit
0a3657f70a
6 changed files with 32 additions and 34 deletions
|
|
@ -38,7 +38,7 @@ import (
|
||||||
"github.com/ethereum/go-ethereum/log"
|
"github.com/ethereum/go-ethereum/log"
|
||||||
"github.com/ethereum/go-ethereum/metrics"
|
"github.com/ethereum/go-ethereum/metrics"
|
||||||
"github.com/ethereum/go-ethereum/node"
|
"github.com/ethereum/go-ethereum/node"
|
||||||
"gopkg.in/urfave/cli.v1"
|
cli "gopkg.in/urfave/cli.v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
@ -173,7 +173,7 @@ var (
|
||||||
utils.MetricsInfluxDBDatabaseFlag,
|
utils.MetricsInfluxDBDatabaseFlag,
|
||||||
utils.MetricsInfluxDBUsernameFlag,
|
utils.MetricsInfluxDBUsernameFlag,
|
||||||
utils.MetricsInfluxDBPasswordFlag,
|
utils.MetricsInfluxDBPasswordFlag,
|
||||||
utils.MetricsInfluxDBHostTagFlag,
|
utils.MetricsInfluxDBTagsFlag,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ import (
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/cmd/utils"
|
"github.com/ethereum/go-ethereum/cmd/utils"
|
||||||
"github.com/ethereum/go-ethereum/internal/debug"
|
"github.com/ethereum/go-ethereum/internal/debug"
|
||||||
"gopkg.in/urfave/cli.v1"
|
cli "gopkg.in/urfave/cli.v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
// AppHelpTemplate is the test template for the default, global app help topic.
|
// AppHelpTemplate is the test template for the default, global app help topic.
|
||||||
|
|
@ -229,7 +229,7 @@ var AppHelpFlagGroups = []flagGroup{
|
||||||
utils.MetricsInfluxDBDatabaseFlag,
|
utils.MetricsInfluxDBDatabaseFlag,
|
||||||
utils.MetricsInfluxDBUsernameFlag,
|
utils.MetricsInfluxDBUsernameFlag,
|
||||||
utils.MetricsInfluxDBPasswordFlag,
|
utils.MetricsInfluxDBPasswordFlag,
|
||||||
utils.MetricsInfluxDBHostTagFlag,
|
utils.MetricsInfluxDBTagsFlag,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@ func main() {
|
||||||
swarmmetrics.MetricsInfluxDBDatabaseFlag,
|
swarmmetrics.MetricsInfluxDBDatabaseFlag,
|
||||||
swarmmetrics.MetricsInfluxDBUsernameFlag,
|
swarmmetrics.MetricsInfluxDBUsernameFlag,
|
||||||
swarmmetrics.MetricsInfluxDBPasswordFlag,
|
swarmmetrics.MetricsInfluxDBPasswordFlag,
|
||||||
swarmmetrics.MetricsInfluxDBHostTagFlag,
|
swarmmetrics.MetricsInfluxDBTagsFlag,
|
||||||
}...)
|
}...)
|
||||||
|
|
||||||
app.Flags = append(app.Flags, tracing.Flags...)
|
app.Flags = append(app.Flags, tracing.Flags...)
|
||||||
|
|
@ -183,13 +183,14 @@ func emitMetrics(ctx *cli.Context) error {
|
||||||
database = ctx.GlobalString(swarmmetrics.MetricsInfluxDBDatabaseFlag.Name)
|
database = ctx.GlobalString(swarmmetrics.MetricsInfluxDBDatabaseFlag.Name)
|
||||||
username = ctx.GlobalString(swarmmetrics.MetricsInfluxDBUsernameFlag.Name)
|
username = ctx.GlobalString(swarmmetrics.MetricsInfluxDBUsernameFlag.Name)
|
||||||
password = ctx.GlobalString(swarmmetrics.MetricsInfluxDBPasswordFlag.Name)
|
password = ctx.GlobalString(swarmmetrics.MetricsInfluxDBPasswordFlag.Name)
|
||||||
hosttag = ctx.GlobalString(swarmmetrics.MetricsInfluxDBHostTagFlag.Name)
|
tags = ctx.GlobalString(swarmmetrics.MetricsInfluxDBTagsFlag.Name)
|
||||||
)
|
)
|
||||||
return influxdb.InfluxDBWithTagsOnce(gethmetrics.DefaultRegistry, endpoint, database, username, password, "swarm-smoke.", map[string]string{
|
|
||||||
"host": hosttag,
|
tagsMap := utils.SplitTagsFlag(tags)
|
||||||
"version": gitCommit,
|
tagsMap["version"] = gitCommit
|
||||||
"filesize": fmt.Sprintf("%v", filesize),
|
tagsMap["filesize"] = fmt.Sprintf("%v", filesize)
|
||||||
})
|
|
||||||
|
return influxdb.InfluxDBWithTagsOnce(gethmetrics.DefaultRegistry, endpoint, database, username, password, "swarm-smoke.", tagsMap)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
||||||
|
|
@ -1463,7 +1463,7 @@ func SetupMetrics(ctx *cli.Context) {
|
||||||
)
|
)
|
||||||
|
|
||||||
if enableExport {
|
if enableExport {
|
||||||
tagsMap := splitTagsFlag(ctx.GlobalString(MetricsInfluxDBTagsFlag.Name))
|
tagsMap := SplitTagsFlag(ctx.GlobalString(MetricsInfluxDBTagsFlag.Name))
|
||||||
|
|
||||||
log.Info("Enabling metrics export to InfluxDB")
|
log.Info("Enabling metrics export to InfluxDB")
|
||||||
|
|
||||||
|
|
@ -1472,7 +1472,7 @@ func SetupMetrics(ctx *cli.Context) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func splitTagsFlag(tagsFlag string) map[string]string {
|
func SplitTagsFlag(tagsFlag string) map[string]string {
|
||||||
tags := strings.Split(tagsFlag, ",")
|
tags := strings.Split(tagsFlag, ",")
|
||||||
tagsMap := map[string]string{}
|
tagsMap := map[string]string{}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Test_splitTagsFlag(t *testing.T) {
|
func Test_SplitTagsFlag(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
args string
|
args string
|
||||||
|
|
@ -56,7 +56,7 @@ func Test_splitTagsFlag(t *testing.T) {
|
||||||
}
|
}
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
if got := splitTagsFlag(tt.args); !reflect.DeepEqual(got, tt.want) {
|
if got := SplitTagsFlag(tt.args); !reflect.DeepEqual(got, tt.want) {
|
||||||
t.Errorf("splitTagsFlag() = %v, want %v", got, tt.want)
|
t.Errorf("splitTagsFlag() = %v, want %v", got, tt.want)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ import (
|
||||||
gethmetrics "github.com/ethereum/go-ethereum/metrics"
|
gethmetrics "github.com/ethereum/go-ethereum/metrics"
|
||||||
"github.com/ethereum/go-ethereum/metrics/influxdb"
|
"github.com/ethereum/go-ethereum/metrics/influxdb"
|
||||||
"github.com/ethereum/go-ethereum/swarm/log"
|
"github.com/ethereum/go-ethereum/swarm/log"
|
||||||
"gopkg.in/urfave/cli.v1"
|
cli "gopkg.in/urfave/cli.v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
@ -55,14 +55,14 @@ var (
|
||||||
Usage: "Metrics InfluxDB password",
|
Usage: "Metrics InfluxDB password",
|
||||||
Value: "",
|
Value: "",
|
||||||
}
|
}
|
||||||
// The `host` tag is part of every measurement sent to InfluxDB. Queries on tags are faster in InfluxDB.
|
// Tags are part of every measurement sent to InfluxDB. Queries on tags are faster in InfluxDB.
|
||||||
// It is used so that we can group all nodes and average a measurement across all of them, but also so
|
// For example `host` tag could be used so that we can group all nodes and average a measurement
|
||||||
// that we can select a specific node and inspect its measurements.
|
// across all of them, but also so that we can select a specific node and inspect its measurements.
|
||||||
// https://docs.influxdata.com/influxdb/v1.4/concepts/key_concepts/#tag-key
|
// https://docs.influxdata.com/influxdb/v1.4/concepts/key_concepts/#tag-key
|
||||||
MetricsInfluxDBHostTagFlag = cli.StringFlag{
|
MetricsInfluxDBTagsFlag = cli.StringFlag{
|
||||||
Name: "metrics.influxdb.host.tag",
|
Name: "metrics.influxdb.tags",
|
||||||
Usage: "Metrics InfluxDB `host` tag attached to all measurements",
|
Usage: "Comma-separated InfluxDB tags (key/values) attached to all measurements",
|
||||||
Value: "localhost",
|
Value: "host=localhost",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -75,37 +75,34 @@ var Flags = []cli.Flag{
|
||||||
MetricsInfluxDBDatabaseFlag,
|
MetricsInfluxDBDatabaseFlag,
|
||||||
MetricsInfluxDBUsernameFlag,
|
MetricsInfluxDBUsernameFlag,
|
||||||
MetricsInfluxDBPasswordFlag,
|
MetricsInfluxDBPasswordFlag,
|
||||||
MetricsInfluxDBHostTagFlag,
|
MetricsInfluxDBTagsFlag,
|
||||||
}
|
}
|
||||||
|
|
||||||
func Setup(ctx *cli.Context) {
|
func Setup(ctx *cli.Context) {
|
||||||
if gethmetrics.Enabled {
|
if gethmetrics.Enabled {
|
||||||
log.Info("Enabling swarm metrics collection")
|
log.Info("Enabling swarm metrics collection")
|
||||||
var (
|
var (
|
||||||
enableExport = ctx.GlobalBool(MetricsEnableInfluxDBExportFlag.Name)
|
|
||||||
enableAccountingExport = ctx.GlobalBool(MetricsEnableInfluxDBAccountingExportFlag.Name)
|
|
||||||
endpoint = ctx.GlobalString(MetricsInfluxDBEndpointFlag.Name)
|
endpoint = ctx.GlobalString(MetricsInfluxDBEndpointFlag.Name)
|
||||||
database = ctx.GlobalString(MetricsInfluxDBDatabaseFlag.Name)
|
database = ctx.GlobalString(MetricsInfluxDBDatabaseFlag.Name)
|
||||||
username = ctx.GlobalString(MetricsInfluxDBUsernameFlag.Name)
|
username = ctx.GlobalString(MetricsInfluxDBUsernameFlag.Name)
|
||||||
password = ctx.GlobalString(MetricsInfluxDBPasswordFlag.Name)
|
password = ctx.GlobalString(MetricsInfluxDBPasswordFlag.Name)
|
||||||
hosttag = ctx.GlobalString(MetricsInfluxDBHostTagFlag.Name)
|
enableExport = ctx.GlobalBool(MetricsEnableInfluxDBExportFlag.Name)
|
||||||
|
enableAccountingExport = ctx.GlobalBool(MetricsEnableInfluxDBAccountingExportFlag.Name)
|
||||||
)
|
)
|
||||||
|
|
||||||
// Start system runtime metrics collection
|
// Start system runtime metrics collection
|
||||||
go gethmetrics.CollectProcessMetrics(2 * time.Second)
|
go gethmetrics.CollectProcessMetrics(2 * time.Second)
|
||||||
|
|
||||||
|
tagsMap := utils.SplitTagsFlag(ctx.GlobalString(MetricsInfluxDBTagsFlag.Name))
|
||||||
|
|
||||||
if enableExport {
|
if enableExport {
|
||||||
log.Info("Enabling swarm metrics export to InfluxDB")
|
log.Info("Enabling swarm metrics export to InfluxDB")
|
||||||
go influxdb.InfluxDBWithTags(gethmetrics.DefaultRegistry, 10*time.Second, endpoint, database, username, password, "swarm.", map[string]string{
|
go influxdb.InfluxDBWithTags(gethmetrics.DefaultRegistry, 10*time.Second, endpoint, database, username, password, "swarm.", tagsMap)
|
||||||
"host": hosttag,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if enableAccountingExport {
|
if enableAccountingExport {
|
||||||
log.Info("Exporting accounting metrics to InfluxDB")
|
log.Info("Exporting swarm accounting metrics to InfluxDB")
|
||||||
go influxdb.InfluxDBWithTags(gethmetrics.AccountingRegistry, 10*time.Second, endpoint, database, username, password, "accounting.", map[string]string{
|
go influxdb.InfluxDBWithTags(gethmetrics.AccountingRegistry, 10*time.Second, endpoint, database, username, password, "accounting.", tagsMap)
|
||||||
"host": hosttag,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue