diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 06daf8198075..6a25106498ca 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -115,6 +115,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Use RFC3339 format for timestamps collected using the SQL module. {pull}15847[15847] - Avoid parsing errors returned from prometheus endpoints. {pull}15712[15712] - Add dedot for cloudwatch metric name. {issue}15916[15916] {pull}15917[15917] +- Fixed issue `logstash-xpack` module suddenly ceasing to monitor Logstash. {issue}15974[15974] {pull}16044[16044] *Packetbeat* diff --git a/metricbeat/module/logstash/node_stats/node_stats.go b/metricbeat/module/logstash/node_stats/node_stats.go index 37af127958dc..7e212585b551 100644 --- a/metricbeat/module/logstash/node_stats/node_stats.go +++ b/metricbeat/module/logstash/node_stats/node_stats.go @@ -18,6 +18,8 @@ package node_stats import ( + "sync" + "github.com/elastic/beats/metricbeat/mb" "github.com/elastic/beats/metricbeat/mb/parse" "github.com/elastic/beats/metricbeat/module/logstash" @@ -48,6 +50,7 @@ var ( // MetricSet type defines all fields of the MetricSet type MetricSet struct { *logstash.MetricSet + initialized sync.Once } // New create a new instance of the MetricSet @@ -58,7 +61,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { } return &MetricSet{ - ms, + MetricSet: ms, }, nil } @@ -66,7 +69,10 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { // It returns the event which is then forward to the output. In case of an error, a // descriptive error must be returned. func (m *MetricSet) Fetch(r mb.ReporterV2) error { - err := m.init() + var err error + m.initialized.Do(func() { + err = m.init() + }) if err != nil { if m.XPack { m.Logger().Error(err)