diff --git a/metricbeat/module/prometheus/collector/collector.go b/metricbeat/module/prometheus/collector/collector.go index 59d2cd75071..44f645b8461 100644 --- a/metricbeat/module/prometheus/collector/collector.go +++ b/metricbeat/module/prometheus/collector/collector.go @@ -43,10 +43,9 @@ var ( ) func init() { - mb.Registry.MustAddMetricSet("prometheus", "collector", New, + mb.Registry.MustAddMetricSet("prometheus", "collector", MetricSetBuilder("prometheus"), mb.WithHostParser(hostParser), mb.DefaultMetricSet(), - mb.WithNamespace("prometheus"), ) } @@ -56,33 +55,37 @@ type MetricSet struct { prometheus p.Prometheus includeMetrics []*regexp.Regexp excludeMetrics []*regexp.Regexp + namespace string } -// New creates a new metricset -func New(base mb.BaseMetricSet) (mb.MetricSet, error) { - config := defaultConfig - if err := base.Module().UnpackConfig(&config); err != nil { - return nil, err - } - prometheus, err := p.NewPrometheusClient(base) - if err != nil { - return nil, err - } +// MetricSetBuilder returns a builder function for a new Prometheus metricset using the given mapping +func MetricSetBuilder(namespace string) func(base mb.BaseMetricSet) (mb.MetricSet, error) { + return func(base mb.BaseMetricSet) (mb.MetricSet, error) { + config := defaultConfig + if err := base.Module().UnpackConfig(&config); err != nil { + return nil, err + } + prometheus, err := p.NewPrometheusClient(base) + if err != nil { + return nil, err + } - ms := &MetricSet{ - BaseMetricSet: base, - prometheus: prometheus, - } - ms.excludeMetrics, err = compilePatternList(config.MetricsFilters.ExcludeMetrics) - if err != nil { - return nil, errors.Wrapf(err, "unable to compile exclude patterns") - } - ms.includeMetrics, err = compilePatternList(config.MetricsFilters.IncludeMetrics) - if err != nil { - return nil, errors.Wrapf(err, "unable to compile include patterns") - } + ms := &MetricSet{ + BaseMetricSet: base, + prometheus: prometheus, + namespace: namespace, + } + ms.excludeMetrics, err = compilePatternList(config.MetricsFilters.ExcludeMetrics) + if err != nil { + return nil, errors.Wrapf(err, "unable to compile exclude patterns") + } + ms.includeMetrics, err = compilePatternList(config.MetricsFilters.IncludeMetrics) + if err != nil { + return nil, errors.Wrapf(err, "unable to compile include patterns") + } - return ms, nil + return ms, nil + } } // Fetch fetches data and reports it @@ -93,7 +96,7 @@ func (m *MetricSet) Fetch(reporter mb.ReporterV2) error { m.addUpEvent(eventList, 0) for _, evt := range eventList { reporter.Event(mb.Event{ - MetricSetFields: evt, + RootFields: common.MapStr{m.namespace: evt}, }) } return errors.Wrap(err, "unable to decode response from prometheus endpoint") @@ -137,7 +140,7 @@ func (m *MetricSet) Fetch(reporter mb.ReporterV2) error { // Converts hash list to slice for _, e := range eventList { isOpen := reporter.Event(mb.Event{ - MetricSetFields: e, + RootFields: common.MapStr{m.namespace: e}, }) if !isOpen { break diff --git a/x-pack/metricbeat/module/openmetrics/collector/_meta/data.json b/x-pack/metricbeat/module/openmetrics/collector/_meta/data.json index 2425c601092..88dba9c9659 100644 --- a/x-pack/metricbeat/module/openmetrics/collector/_meta/data.json +++ b/x-pack/metricbeat/module/openmetrics/collector/_meta/data.json @@ -1,7 +1,7 @@ { "@timestamp": "2019-03-01T08:05:34.853Z", "event": { - "dataset": "openmetrics", + "dataset": "openmetrics.collector", "duration": 115000, "module": "openmetrics" }, @@ -11,7 +11,7 @@ }, "openmetrics": { "labels": { - "device": "br-0cb306323b90", + "device": "br-10229e3512d9", "job": "openmetrics" }, "metrics": { diff --git a/x-pack/metricbeat/module/openmetrics/collector/_meta/testdata/docs.plain-expected.json b/x-pack/metricbeat/module/openmetrics/collector/_meta/testdata/docs.plain-expected.json index 8134a4e3af7..16f5001ba5e 100644 --- a/x-pack/metricbeat/module/openmetrics/collector/_meta/testdata/docs.plain-expected.json +++ b/x-pack/metricbeat/module/openmetrics/collector/_meta/testdata/docs.plain-expected.json @@ -1,7 +1,7 @@ [ { "event": { - "dataset": "openmetrics", + "dataset": "openmetrics.collector", "duration": 115000, "module": "openmetrics" }, @@ -11,8 +11,8 @@ }, "openmetrics": { "labels": { - "device": "br-0cb306323b90", - "instance": "127.0.0.1:51316", + "device": "br-10229e3512d9", + "instance": "127.0.0.1:50135", "job": "openmetrics" }, "metrics": { @@ -26,7 +26,7 @@ }, { "event": { - "dataset": "openmetrics", + "dataset": "openmetrics.collector", "duration": 115000, "module": "openmetrics" }, @@ -36,8 +36,8 @@ }, "openmetrics": { "labels": { - "device": "br-38425a39f36b", - "instance": "127.0.0.1:51316", + "device": "br-425cb4c454a6", + "instance": "127.0.0.1:50135", "job": "openmetrics" }, "metrics": { @@ -51,7 +51,7 @@ }, { "event": { - "dataset": "openmetrics", + "dataset": "openmetrics.collector", "duration": 115000, "module": "openmetrics" }, @@ -61,8 +61,8 @@ }, "openmetrics": { "labels": { - "device": "br-38feb0aad6ab", - "instance": "127.0.0.1:51316", + "device": "br-38425a39f36b", + "instance": "127.0.0.1:50135", "job": "openmetrics" }, "metrics": { @@ -76,7 +76,7 @@ }, { "event": { - "dataset": "openmetrics", + "dataset": "openmetrics.collector", "duration": 115000, "module": "openmetrics" }, @@ -86,12 +86,11 @@ }, "openmetrics": { "labels": { - "device": "br-425cb4c454a6", - "instance": "127.0.0.1:51316", - "job": "openmetrics" + "instance": "127.0.0.1:50135", + "job": "prometheus" }, "metrics": { - "node_network_carrier": 0 + "up": 1 } }, "service": { @@ -101,7 +100,7 @@ }, { "event": { - "dataset": "openmetrics", + "dataset": "openmetrics.collector", "duration": 115000, "module": "openmetrics" }, @@ -111,8 +110,8 @@ }, "openmetrics": { "labels": { - "device": "br-10229e3512d9", - "instance": "127.0.0.1:51316", + "device": "br-33d819d5f834", + "instance": "127.0.0.1:50135", "job": "openmetrics" }, "metrics": { @@ -126,7 +125,7 @@ }, { "event": { - "dataset": "openmetrics", + "dataset": "openmetrics.collector", "duration": 115000, "module": "openmetrics" }, @@ -136,8 +135,8 @@ }, "openmetrics": { "labels": { - "device": "br-33d819d5f834", - "instance": "127.0.0.1:51316", + "device": "br-4e623477470e", + "instance": "127.0.0.1:50135", "job": "openmetrics" }, "metrics": { @@ -151,7 +150,7 @@ }, { "event": { - "dataset": "openmetrics", + "dataset": "openmetrics.collector", "duration": 115000, "module": "openmetrics" }, @@ -162,7 +161,7 @@ "openmetrics": { "labels": { "device": "br-210476dc4ef8", - "instance": "127.0.0.1:51316", + "instance": "127.0.0.1:50135", "job": "openmetrics" }, "metrics": { @@ -176,7 +175,7 @@ }, { "event": { - "dataset": "openmetrics", + "dataset": "openmetrics.collector", "duration": 115000, "module": "openmetrics" }, @@ -186,11 +185,12 @@ }, "openmetrics": { "labels": { - "instance": "127.0.0.1:51316", - "job": "prometheus" + "device": "br-0cb306323b90", + "instance": "127.0.0.1:50135", + "job": "openmetrics" }, "metrics": { - "up": 1 + "node_network_carrier": 0 } }, "service": { @@ -200,7 +200,7 @@ }, { "event": { - "dataset": "openmetrics", + "dataset": "openmetrics.collector", "duration": 115000, "module": "openmetrics" }, @@ -210,8 +210,8 @@ }, "openmetrics": { "labels": { - "device": "br-4e623477470e", - "instance": "127.0.0.1:51316", + "device": "br-38feb0aad6ab", + "instance": "127.0.0.1:50135", "job": "openmetrics" }, "metrics": { @@ -225,7 +225,7 @@ }, { "event": { - "dataset": "openmetrics", + "dataset": "openmetrics.collector", "duration": 115000, "module": "openmetrics" }, @@ -236,7 +236,7 @@ "openmetrics": { "labels": { "device": "br-3a285aa5e58c", - "instance": "127.0.0.1:51316", + "instance": "127.0.0.1:50135", "job": "openmetrics" }, "metrics": { diff --git a/x-pack/metricbeat/module/openmetrics/collector/collector.go b/x-pack/metricbeat/module/openmetrics/collector/collector.go index 3549da91069..85bb1e3c8fe 100644 --- a/x-pack/metricbeat/module/openmetrics/collector/collector.go +++ b/x-pack/metricbeat/module/openmetrics/collector/collector.go @@ -24,7 +24,6 @@ var ( func init() { mb.Registry.MustAddMetricSet("openmetrics", "collector", - collector.New, - mb.WithHostParser(hostParser), - mb.WithNamespace("openmetrics")) + collector.MetricSetBuilder("openmetrics"), + mb.WithHostParser(hostParser)) }