do not overwrite metrics provider in node#NewNode

also, make running Prometheus server optional.

Closes #2019
This commit is contained in:
Anton Kaliaev 2018-07-24 15:44:01 +04:00
parent b92860b6c4
commit 75a26ebd6d
No known key found for this signature in database
GPG Key ID: 7B6881D965918214
2 changed files with 14 additions and 23 deletions

View File

@ -85,7 +85,7 @@ func DefaultNewNode(config *cfg.Config, logger log.Logger) (*Node, error) {
proxy.DefaultClientCreator(config.ProxyApp, config.ABCI, config.DBDir()), proxy.DefaultClientCreator(config.ProxyApp, config.ABCI, config.DBDir()),
DefaultGenesisDocProviderFunc(config), DefaultGenesisDocProviderFunc(config),
DefaultDBProvider, DefaultDBProvider,
DefaultMetricsProvider, DefaultMetricsProvider(config.Instrumentation),
logger, logger,
) )
} }
@ -93,15 +93,15 @@ func DefaultNewNode(config *cfg.Config, logger log.Logger) (*Node, error) {
// MetricsProvider returns a consensus, p2p and mempool Metrics. // MetricsProvider returns a consensus, p2p and mempool Metrics.
type MetricsProvider func() (*cs.Metrics, *p2p.Metrics, *mempl.Metrics) type MetricsProvider func() (*cs.Metrics, *p2p.Metrics, *mempl.Metrics)
// DefaultMetricsProvider returns consensus, p2p and mempool Metrics build // DefaultMetricsProvider returns Metrics build using Prometheus client library
// using Prometheus client library. // if Prometheus is enabled. Otherwise, it returns no-op Metrics.
func DefaultMetricsProvider() (*cs.Metrics, *p2p.Metrics, *mempl.Metrics) { func DefaultMetricsProvider(config *cfg.InstrumentationConfig) MetricsProvider {
return cs.PrometheusMetrics(), p2p.PrometheusMetrics(), mempl.PrometheusMetrics() return func() (*cs.Metrics, *p2p.Metrics, *mempl.Metrics) {
} if config.Prometheus {
return cs.PrometheusMetrics(), p2p.PrometheusMetrics(), mempl.PrometheusMetrics()
// NopMetricsProvider returns consensus, p2p and mempool Metrics as no-op. }
func NopMetricsProvider() (*cs.Metrics, *p2p.Metrics, *mempl.Metrics) { return cs.NopMetrics(), p2p.NopMetrics(), mempl.NopMetrics()
return cs.NopMetrics(), p2p.NopMetrics(), mempl.NopMetrics() }
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@ -229,17 +229,7 @@ func NewNode(config *cfg.Config,
consensusLogger.Info("This node is not a validator", "addr", privValidator.GetAddress(), "pubKey", privValidator.GetPubKey()) consensusLogger.Info("This node is not a validator", "addr", privValidator.GetAddress(), "pubKey", privValidator.GetPubKey())
} }
// metrics csMetrics, p2pMetrics, memplMetrics := metricsProvider()
var (
csMetrics *cs.Metrics
p2pMetrics *p2p.Metrics
memplMetrics *mempl.Metrics
)
if config.Instrumentation.Prometheus {
csMetrics, p2pMetrics, memplMetrics = metricsProvider()
} else {
csMetrics, p2pMetrics, memplMetrics = NopMetricsProvider()
}
// Make MempoolReactor // Make MempoolReactor
mempoolLogger := logger.With("module", "mempool") mempoolLogger := logger.With("module", "mempool")
@ -462,7 +452,8 @@ func (n *Node) OnStart() error {
n.rpcListeners = listeners n.rpcListeners = listeners
} }
if n.config.Instrumentation.Prometheus { if n.config.Instrumentation.Prometheus &&
n.config.Instrumentation.PrometheusListenAddr != "" {
n.prometheusSrv = n.startPrometheusServer(n.config.Instrumentation.PrometheusListenAddr) n.prometheusSrv = n.startPrometheusServer(n.config.Instrumentation.PrometheusListenAddr)
} }

View File

@ -123,7 +123,7 @@ func NewTendermint(app abci.Application) *nm.Node {
node, err := nm.NewNode(config, pv, papp, node, err := nm.NewNode(config, pv, papp,
nm.DefaultGenesisDocProviderFunc(config), nm.DefaultGenesisDocProviderFunc(config),
nm.DefaultDBProvider, nm.DefaultDBProvider,
nm.DefaultMetricsProvider, nm.DefaultMetricsProvider(config.Instrumentation),
logger) logger)
if err != nil { if err != nil {
panic(err) panic(err)