Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stop counterCache only when already started #19103

Merged
merged 11 commits into from
Jun 17, 2020
Merged
1 change: 1 addition & 0 deletions CHANGELOG.next.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d
- Fix compute and pubsub dashboard for googlecloud module. {issue}18962[18962] {pull}18980[18980]
- Fix crash on vsphere module when Host information is not available. {issue}18996[18996] {pull}19078[19078]
- Fix incorrect usage of hints builder when exposed port is a substring of the hint {pull}19052[19052]
- Stop counterCache only when already started {pull}19103[19103]

*Packetbeat*

Expand Down
33 changes: 19 additions & 14 deletions metricbeat/module/prometheus/collector/collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ package collector

import (
"regexp"
"sync"

"github.com/pkg/errors"
dto "github.com/prometheus/client_model/go"
Expand Down Expand Up @@ -76,13 +75,13 @@ type PromEventsGeneratorFactory func(ms mb.BaseMetricSet) (PromEventsGenerator,
// MetricSet for fetching prometheus data
type MetricSet struct {
mb.BaseMetricSet
prometheus p.Prometheus
includeMetrics []*regexp.Regexp
excludeMetrics []*regexp.Regexp
namespace string
promEventsGen PromEventsGenerator
once sync.Once
host string
prometheus p.Prometheus
includeMetrics []*regexp.Regexp
excludeMetrics []*regexp.Regexp
namespace string
promEventsGen PromEventsGenerator
host string
eventGenStarted bool
}

// MetricSetBuilder returns a builder function for a new Prometheus metricset using
Expand All @@ -104,10 +103,11 @@ func MetricSetBuilder(namespace string, genFactory PromEventsGeneratorFactory) f
}

ms := &MetricSet{
BaseMetricSet: base,
prometheus: prometheus,
namespace: namespace,
promEventsGen: promEventsGen,
BaseMetricSet: base,
prometheus: prometheus,
namespace: namespace,
promEventsGen: promEventsGen,
eventGenStarted: false,
}
// store host here to use it as a pointer when building `up` metric
ms.host = ms.Host()
Expand All @@ -126,7 +126,10 @@ func MetricSetBuilder(namespace string, genFactory PromEventsGeneratorFactory) f

// Fetch fetches data and reports it
func (m *MetricSet) Fetch(reporter mb.ReporterV2) error {
m.once.Do(m.promEventsGen.Start)
if !m.eventGenStarted {
m.promEventsGen.Start()
m.eventGenStarted = true
}

families, err := m.prometheus.GetFamilies()
eventList := map[string]common.MapStr{}
Expand Down Expand Up @@ -186,7 +189,9 @@ func (m *MetricSet) Fetch(reporter mb.ReporterV2) error {

// Close stops the metricset
func (m *MetricSet) Close() error {
m.promEventsGen.Stop()
if m.eventGenStarted {
m.promEventsGen.Stop()
}
return nil
}

Expand Down
2 changes: 2 additions & 0 deletions x-pack/metricbeat/module/prometheus/collector/data.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (

"github.com/elastic/beats/v7/libbeat/common"
"github.com/elastic/beats/v7/libbeat/common/cfgwarn"
"github.com/elastic/beats/v7/libbeat/logp"
"github.com/elastic/beats/v7/metricbeat/mb"
"github.com/elastic/beats/v7/metricbeat/module/prometheus/collector"

Expand Down Expand Up @@ -54,6 +55,7 @@ func (g *typedGenerator) Start() {
}

func (g *typedGenerator) Stop() {
logp.Debug("prometheus.collector.cache", "stopping counterCache")
g.counterCache.Stop()
}

Expand Down