Skip to content

Commit

Permalink
Add fields validation for histogram subfields (#17759)
Browse files Browse the repository at this point in the history
Add validation to histogram subfields in a way that they don't need to
be added to the mappings, but they can still be checked. This is helpful
to avoid having to add exceptions to all the modules based on Prometheus
when Elasticsearch types are used.
  • Loading branch information
jsoriano authored Apr 17, 2020
1 parent 0afffa8 commit 5983411
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 7 deletions.
1 change: 1 addition & 0 deletions CHANGELOG-developer.next.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -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]
4 changes: 4 additions & 0 deletions libbeat/mapping/field.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions libbeat/tests/system/beat/beat.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
Original file line number Diff line number Diff line change
@@ -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
rate_counters: true
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down

0 comments on commit 5983411

Please sign in to comment.