|
|
@@ -23,7 +23,7 @@ import (
|
|
|
gethmetrics "github.com/ethereum/go-ethereum/metrics"
|
|
|
"github.com/ethereum/go-ethereum/metrics/influxdb"
|
|
|
"github.com/ethereum/go-ethereum/swarm/log"
|
|
|
- "gopkg.in/urfave/cli.v1"
|
|
|
+ cli "gopkg.in/urfave/cli.v1"
|
|
|
)
|
|
|
|
|
|
var (
|
|
|
@@ -55,14 +55,14 @@ var (
|
|
|
Usage: "Metrics InfluxDB password",
|
|
|
Value: "",
|
|
|
}
|
|
|
- // The `host` tag is 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
|
|
|
- // that we can select a specific node and inspect its measurements.
|
|
|
+ // Tags are part of every measurement sent to InfluxDB. Queries on tags are faster in InfluxDB.
|
|
|
+ // For example `host` tag could be used so that we can group all nodes and average a measurement
|
|
|
+ // 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
|
|
|
- MetricsInfluxDBHostTagFlag = cli.StringFlag{
|
|
|
- Name: "metrics.influxdb.host.tag",
|
|
|
- Usage: "Metrics InfluxDB `host` tag attached to all measurements",
|
|
|
- Value: "localhost",
|
|
|
+ MetricsInfluxDBTagsFlag = cli.StringFlag{
|
|
|
+ Name: "metrics.influxdb.tags",
|
|
|
+ Usage: "Comma-separated InfluxDB tags (key/values) attached to all measurements",
|
|
|
+ Value: "host=localhost",
|
|
|
}
|
|
|
)
|
|
|
|
|
|
@@ -75,37 +75,34 @@ var Flags = []cli.Flag{
|
|
|
MetricsInfluxDBDatabaseFlag,
|
|
|
MetricsInfluxDBUsernameFlag,
|
|
|
MetricsInfluxDBPasswordFlag,
|
|
|
- MetricsInfluxDBHostTagFlag,
|
|
|
+ MetricsInfluxDBTagsFlag,
|
|
|
}
|
|
|
|
|
|
func Setup(ctx *cli.Context) {
|
|
|
if gethmetrics.Enabled {
|
|
|
log.Info("Enabling swarm metrics collection")
|
|
|
var (
|
|
|
- enableExport = ctx.GlobalBool(MetricsEnableInfluxDBExportFlag.Name)
|
|
|
- enableAccountingExport = ctx.GlobalBool(MetricsEnableInfluxDBAccountingExportFlag.Name)
|
|
|
endpoint = ctx.GlobalString(MetricsInfluxDBEndpointFlag.Name)
|
|
|
database = ctx.GlobalString(MetricsInfluxDBDatabaseFlag.Name)
|
|
|
username = ctx.GlobalString(MetricsInfluxDBUsernameFlag.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
|
|
|
go gethmetrics.CollectProcessMetrics(2 * time.Second)
|
|
|
|
|
|
+ tagsMap := utils.SplitTagsFlag(ctx.GlobalString(MetricsInfluxDBTagsFlag.Name))
|
|
|
+
|
|
|
if enableExport {
|
|
|
log.Info("Enabling swarm metrics export to InfluxDB")
|
|
|
- go influxdb.InfluxDBWithTags(gethmetrics.DefaultRegistry, 10*time.Second, endpoint, database, username, password, "swarm.", map[string]string{
|
|
|
- "host": hosttag,
|
|
|
- })
|
|
|
+ go influxdb.InfluxDBWithTags(gethmetrics.DefaultRegistry, 10*time.Second, endpoint, database, username, password, "swarm.", tagsMap)
|
|
|
}
|
|
|
|
|
|
if enableAccountingExport {
|
|
|
- log.Info("Exporting accounting metrics to InfluxDB")
|
|
|
- go influxdb.InfluxDBWithTags(gethmetrics.AccountingRegistry, 10*time.Second, endpoint, database, username, password, "accounting.", map[string]string{
|
|
|
- "host": hosttag,
|
|
|
- })
|
|
|
+ log.Info("Exporting swarm accounting metrics to InfluxDB")
|
|
|
+ go influxdb.InfluxDBWithTags(gethmetrics.AccountingRegistry, 10*time.Second, endpoint, database, username, password, "accounting.", tagsMap)
|
|
|
}
|
|
|
}
|
|
|
}
|