diff options
author | Valery Piashchynski <[email protected]> | 2021-03-20 10:57:21 +0300 |
---|---|---|
committer | GitHub <[email protected]> | 2021-03-20 10:57:21 +0300 |
commit | a2666255748d440769e7f56a6ef2cf7fbf7b2a5f (patch) | |
tree | 0698d19f7f08779e32c985e1200c14f3f995abc8 /plugins | |
parent | bd91ca0f3e444405f0f6cf9d1dabbeef93de2d85 (diff) | |
parent | 630888bc3263d54ed35f64fe87649fa4226c761e (diff) |
Merge pull request #608 from dstrop/config-metrics-fix
fix(metrics): remove statsProvider from metrics collectors sync.Map
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/metrics/plugin.go | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/plugins/metrics/plugin.go b/plugins/metrics/plugin.go index fefe92bd..efcbfc50 100644 --- a/plugins/metrics/plugin.go +++ b/plugins/metrics/plugin.go @@ -23,11 +23,6 @@ const ( maxHeaderSize = 1024 * 1024 * 100 // 104MB ) -type statsProvider struct { - collectors []prometheus.Collector - name string -} - // Plugin to manage application metrics using Prometheus. type Plugin struct { cfg *Config @@ -74,10 +69,7 @@ func (m *Plugin) Init(cfg config.Configurer, log logger.Logger) error { // Register invocation will be later in the Serve method for k, v := range collectors { - m.collectors.Store(k, statsProvider{ - collectors: []prometheus.Collector{v}, - name: k, - }) + m.collectors.Store(k, v) } return nil } @@ -92,13 +84,11 @@ func (m *Plugin) Serve() chan error { errCh := make(chan error, 1) m.collectors.Range(func(key, value interface{}) bool { // key - name - // value - statsProvider struct - c := value.(statsProvider) - for _, v := range c.collectors { - if err := m.registry.Register(v); err != nil { - errCh <- err - return false - } + // value - prometheus.Collector + c := value.(prometheus.Collector) + if err := m.registry.Register(c); err != nil { + errCh <- err + return false } return true @@ -211,10 +201,13 @@ func (m *Plugin) Collects() []interface{} { // Collector returns application specific collector by name or nil if collector not found. func (m *Plugin) AddStatProvider(name endure.Named, stat StatProvider) error { - m.collectors.Store(name.Name(), statsProvider{ - collectors: stat.MetricsCollector(), - name: name.Name(), - }) + for _, c := range stat.MetricsCollector() { + err := m.registry.Register(c) + if err != nil { + return err + } + } + return nil } |