diff --git a/CHANGELOG-developer.next.asciidoc b/CHANGELOG-developer.next.asciidoc index 24eb5b2c94b..42d45bb80b6 100644 --- a/CHANGELOG-developer.next.asciidoc +++ b/CHANGELOG-developer.next.asciidoc @@ -79,3 +79,4 @@ The list below covers the major changes between 7.0.0-rc2 and master only. - New mage target for Functionbeat: generate pkg folder to make manager easier. {pull}15580[15880] - Add support for MODULE environment variable in `mage goIntegTest` in metricbeat to run integration tests for a single module. {pull}17147[17147] - Add support for a `TEST_TAGS` environment variable to add tags for tests selection following go build tags semantics, this environment variable is used by mage test targets to add build tags. Python tests can also be tagged with a decorator (`@beat.tag('sometag')`). {pull}16937[16937] {pull}17075[17075] +- Add fields validation for histogram subfields. {pull}17759[17759] diff --git a/libbeat/mapping/field.go b/libbeat/mapping/field.go index 66a580dac5e..7b2ba52e618 100644 --- a/libbeat/mapping/field.go +++ b/libbeat/mapping/field.go @@ -354,6 +354,10 @@ func (f Fields) getKeys(namespace string) []string { } else { keys = append(keys, field.Fields.getKeys(fieldName)...) } + if field.ObjectType == "histogram" { + keys = append(keys, fieldName+".values") + keys = append(keys, fieldName+".counts") + } } return keys diff --git a/libbeat/tests/system/beat/beat.py b/libbeat/tests/system/beat/beat.py index 160df982f56..fa8e0ad3cb4 100644 --- a/libbeat/tests/system/beat/beat.py +++ b/libbeat/tests/system/beat/beat.py @@ -573,6 +573,10 @@ def extract_fields(doc_list, name): if field.get("type") in ["object", "geo_point"]: dictfields.append(newName) + if field.get("type") == "object" and field.get("object_type") == "histogram": + fields.append(newName + ".values") + fields.append(newName + ".counts") + if field.get("type") == "alias": aliases.append(newName) diff --git a/x-pack/metricbeat/module/prometheus/collector/_meta/testdata/config.yml b/x-pack/metricbeat/module/prometheus/collector/_meta/testdata/config.yml index e7b2a5e67b4..380627ba09f 100644 --- a/x-pack/metricbeat/module/prometheus/collector/_meta/testdata/config.yml +++ b/x-pack/metricbeat/module/prometheus/collector/_meta/testdata/config.yml @@ -1,13 +1,7 @@ type: http url: "/metrics" suffix: plain -omit_documented_fields_check: - # these are not mapped by this module but the oss one - - prometheus.labels.* - # histogram values & counts are not mapped (it's part of the type data) - - '*.histogram.values' - - '*.histogram.counts' remove_fields_from_comparison: ["prometheus.labels.instance"] module: use_types: true - rate_counters: true \ No newline at end of file + rate_counters: true diff --git a/x-pack/metricbeat/module/prometheus/collector/collector_test.go b/x-pack/metricbeat/module/prometheus/collector/collector_test.go index 0a3950bdc75..5f42875dd76 100644 --- a/x-pack/metricbeat/module/prometheus/collector/collector_test.go +++ b/x-pack/metricbeat/module/prometheus/collector/collector_test.go @@ -12,6 +12,9 @@ import ( mbtest "github.com/elastic/beats/v7/metricbeat/mb/testing" _ "github.com/elastic/beats/v7/x-pack/metricbeat/module/prometheus" + + // Import common fields for validation + _ "github.com/elastic/beats/v7/metricbeat/module/prometheus" ) func TestData(t *testing.T) {