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

Cherry-pick #19103 to 7.x: Stop counterCache only when already started #19240

Merged
merged 2 commits into from
Jun 24, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.next.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,7 @@ field. You can revert this change by configuring tags for the module and omittin
- 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