github.com/linapex/ethereum-go-chinese@v0.0.0-20190316121929-f8b7a73c3fa1/swarm/metrics/flags.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 19:16:43</date> 10 //</624450113313443840> 11 12 13 package metrics 14 15 import ( 16 "time" 17 18 "github.com/ethereum/go-ethereum/cmd/utils" 19 gethmetrics "github.com/ethereum/go-ethereum/metrics" 20 "github.com/ethereum/go-ethereum/metrics/influxdb" 21 "github.com/ethereum/go-ethereum/swarm/log" 22 "gopkg.in/urfave/cli.v1" 23 ) 24 25 var ( 26 MetricsEnableInfluxDBExportFlag = cli.BoolFlag{ 27 Name: "metrics.influxdb.export", 28 Usage: "Enable metrics export/push to an external InfluxDB database", 29 } 30 MetricsInfluxDBEndpointFlag = cli.StringFlag{ 31 Name: "metrics.influxdb.endpoint", 32 Usage: "Metrics InfluxDB endpoint", 33 Value: "http://127.0.0.1:8086“, 34 } 35 MetricsInfluxDBDatabaseFlag = cli.StringFlag{ 36 Name: "metrics.influxdb.database", 37 Usage: "Metrics InfluxDB database", 38 Value: "metrics", 39 } 40 MetricsInfluxDBUsernameFlag = cli.StringFlag{ 41 Name: "metrics.influxdb.username", 42 Usage: "Metrics InfluxDB username", 43 Value: "", 44 } 45 MetricsInfluxDBPasswordFlag = cli.StringFlag{ 46 Name: "metrics.influxdb.password", 47 Usage: "Metrics InfluxDB password", 48 Value: "", 49 } 50 //“host”标记是发送到influxdb的每个度量的一部分。在influxdb中,对标签的查询更快。 51 //它的使用是为了让我们可以对所有节点进行分组,并对所有节点的测量值进行平均,但也同样如此 52 //我们可以选择一个特定的节点并检查它的测量值。 53 //https://docs.influxdata.com/influxdb/v1.4/concepts/key_-concepts/标记密钥 54 MetricsInfluxDBHostTagFlag = cli.StringFlag{ 55 Name: "metrics.influxdb.host.tag", 56 Usage: "Metrics InfluxDB `host` tag attached to all measurements", 57 Value: "localhost", 58 } 59 ) 60 61 //标志保存度量集合所需的所有命令行标志。 62 var Flags = []cli.Flag{ 63 utils.MetricsEnabledFlag, 64 MetricsEnableInfluxDBExportFlag, 65 MetricsInfluxDBEndpointFlag, 66 MetricsInfluxDBDatabaseFlag, 67 MetricsInfluxDBUsernameFlag, 68 MetricsInfluxDBPasswordFlag, 69 MetricsInfluxDBHostTagFlag, 70 } 71 72 func Setup(ctx *cli.Context) { 73 if gethmetrics.Enabled { 74 log.Info("Enabling swarm metrics collection") 75 var ( 76 enableExport = ctx.GlobalBool(MetricsEnableInfluxDBExportFlag.Name) 77 endpoint = ctx.GlobalString(MetricsInfluxDBEndpointFlag.Name) 78 database = ctx.GlobalString(MetricsInfluxDBDatabaseFlag.Name) 79 username = ctx.GlobalString(MetricsInfluxDBUsernameFlag.Name) 80 password = ctx.GlobalString(MetricsInfluxDBPasswordFlag.Name) 81 hosttag = ctx.GlobalString(MetricsInfluxDBHostTagFlag.Name) 82 ) 83 84 //启动系统运行时度量集合 85 go gethmetrics.CollectProcessMetrics(2 * time.Second) 86 87 if enableExport { 88 log.Info("Enabling swarm metrics export to InfluxDB") 89 go influxdb.InfluxDBWithTags(gethmetrics.DefaultRegistry, 10*time.Second, endpoint, database, username, password, "swarm.", map[string]string{ 90 "host": hosttag, 91 }) 92 } 93 } 94 } 95