diff --git a/plugins/metrics/parameters.go b/plugins/metrics/parameters.go index 601c31d596cf62c8971211bebc4f5101447ef9b5..4f6e146eab6ecb4d84b2517dd3128529eb8f94e1 100644 --- a/plugins/metrics/parameters.go +++ b/plugins/metrics/parameters.go @@ -6,12 +6,15 @@ import ( const ( // CfgMetricsLocal defines the config flag to enable/disable local metrics. - CfgMetricsLocal = "metrics.local" + CfgMetricsLocal = "metrics.local.enable" + // CfgMetricsLocalDB defines the config flag to enable/disable local database metrics. + CfgMetricsLocalDB = "metrics.local.db" // CfgMetricsGlobal defines the config flag to enable/disable global metrics. - CfgMetricsGlobal = "metrics.global" + CfgMetricsGlobal = "metrics.global.enable" ) func init() { flag.Bool(CfgMetricsLocal, true, "include local metrics") + flag.Bool(CfgMetricsLocalDB, false, "include local database metrics") flag.Bool(CfgMetricsGlobal, false, "include global metrics") } diff --git a/plugins/metrics/plugin.go b/plugins/metrics/plugin.go index 68bedc1b7ca640e1bc6d89afe93d543760ce9e3d..7c1449c71b4ed4170c577f65b54359389022e672 100644 --- a/plugins/metrics/plugin.go +++ b/plugins/metrics/plugin.go @@ -47,7 +47,7 @@ func configure(_ *node.Plugin) { } func run(_ *node.Plugin) { - + log.Infof("Starting %s ...", PluginName) if config.Node().GetBool(CfgMetricsLocal) { registerLocalMetrics() } @@ -58,7 +58,8 @@ func run(_ *node.Plugin) { } // create a background worker that update the metrics every second - if err := daemon.BackgroundWorker("Metrics Updater", func(shutdownSignal <-chan struct{}) { + if err := daemon.BackgroundWorker("Metrics Updater[1s]", func(shutdownSignal <-chan struct{}) { + defer log.Infof("Stopping Metrics Updater[1s] ... done") if config.Node().GetBool(CfgMetricsLocal) { timeutil.Ticker(func() { measureCPUUsage() @@ -68,7 +69,6 @@ func run(_ *node.Plugin) { measureValueTips() measureReceivedMPS() measureRequestQueueSize() - measureDBStats() // gossip network traffic g := gossipCurrentTraffic() @@ -79,10 +79,23 @@ func run(_ *node.Plugin) { if config.Node().GetBool(CfgMetricsGlobal) { timeutil.Ticker(calculateNetworkDiameter, 1*time.Minute, shutdownSignal) } - + log.Infof("Stopping Metrics Updater[1s] ...") }, shutdown.PriorityMetrics); err != nil { log.Panicf("Failed to start as daemon: %s", err) } + + if config.Node().GetBool(CfgMetricsLocalDB) { + // create a background worker that updates the db metrics every 20 second + if err := daemon.BackgroundWorker("Metrics Updater[DB]", func(shutdownSignal <-chan struct{}) { + defer log.Infof("Stopping Metrics Updater[DB] ... done") + timeutil.Ticker(func() { + measureDBStats() + }, 20*time.Second, shutdownSignal) + log.Infof("Stopping Metrics Updater[DB] ...") + }, shutdown.PriorityMetrics); err != nil { + log.Panicf("Failed to start as daemon: %s", err) + } + } } func registerLocalMetrics() {