Skip to content

Commit 6ae9ada

Browse files
authored
[apm-data] Set event.dataset if empty for logs (#129074) (#129537)
For APM logs, set event.dataset to data_stream.dataset if event.dataset is empty, to satisfy Anomaly Detection's requirement to have event.dataset in every logs-* data stream. (cherry picked from commit 466afba) # Conflicts: # test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestCase.java
1 parent fc1eeaa commit 6ae9ada

File tree

6 files changed

+95
-3
lines changed

6 files changed

+95
-3
lines changed

docs/changelog/129074.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 129074
2+
summary: "[apm-data] Set `event.dataset` if empty for logs"
3+
area: Data streams
4+
type: bug
5+
issues: []

x-pack/plugin/apm-data/src/main/resources/index-templates/[email protected]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,4 @@ template:
2424
settings:
2525
index:
2626
default_pipeline: logs-apm.app@default-pipeline
27-
final_pipeline: apm@pipeline
27+
final_pipeline: logs-apm@pipeline

x-pack/plugin/apm-data/src/main/resources/index-templates/[email protected]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,4 @@ template:
3131
settings:
3232
index:
3333
default_pipeline: logs-apm.error@default-pipeline
34-
final_pipeline: apm@pipeline
34+
final_pipeline: logs-apm@pipeline
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
version: ${xpack.apmdata.template.version}
3+
_meta:
4+
managed: true
5+
description: Built-in ingest pipeline for logs-apm.*-* data streams
6+
processors:
7+
# Set event.dataset if unset to meet Anomaly Detection requirements
8+
- set:
9+
field: event.dataset
10+
copy_from: "data_stream.dataset"
11+
ignore_empty_value: true
12+
override: false
13+
- pipeline:
14+
name: apm@pipeline

x-pack/plugin/apm-data/src/main/resources/resources.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# "version" holds the version of the templates and ingest pipelines installed
22
# by xpack-plugin apm-data. This must be increased whenever an existing template or
33
# pipeline is changed, in order for it to be updated on Elasticsearch upgrade.
4-
version: 15
4+
version: 16
55

66
component-templates:
77
# Data lifecycle.
@@ -97,6 +97,9 @@ ingest-pipelines:
9797
- metrics-apm@pipeline:
9898
dependencies:
9999
- apm@pipeline
100+
- logs-apm@pipeline:
101+
dependencies:
102+
- apm@pipeline
100103

101104
lifecycle-policies:
102105
- logs-apm.app_logs-default_policy
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
---
2+
setup:
3+
- do:
4+
cluster.health:
5+
wait_for_events: languid
6+
---
7+
"Test logs-apm.error-* event.dataset field":
8+
- do:
9+
bulk:
10+
index: logs-apm.error-eventdataset
11+
refresh: true
12+
body:
13+
# data_stream.dataset present, event.dataset not present
14+
- create: {}
15+
- '{"@timestamp": "2017-06-22", "data_stream": {"type": "logs", "dataset": "apm.error", "namespace": "eventdataset"}, "log": {"level": "error"}, "error": {"log": {"message": "loglevel"}, "exception": [{"message": "exception_used"}]}}'
16+
# data_stream.dataset present, event.dataset present
17+
- create: {}
18+
- '{"@timestamp": "2017-06-22", "data_stream": {"type": "logs", "dataset": "apm.error", "namespace": "eventdataset"}, "event": {"dataset": "foo"}, "log": {"level": "error"}, "error": {"log": {"message": "loglevel"}, "exception": [{"message": "exception_used"}]}}'
19+
# unlikely: data_stream.dataset not present, event.dataset not present
20+
- create: {}
21+
- '{"@timestamp": "2017-06-22", "log": {"level": "error"}, "error": {"log": {"message": "loglevel"}, "exception": [{"message": "exception_used"}]}}'
22+
# unlikely: data_stream.dataset not present, event.dataset present
23+
- create: {}
24+
- '{"@timestamp": "2017-06-22", "event": {"dataset": "foo"}, "log": {"level": "error"}, "error": {"log": {"message": "loglevel"}, "exception": [{"message": "exception_used"}]}}'
25+
26+
- is_false: errors
27+
28+
- do:
29+
search:
30+
index: logs-apm.error-eventdataset
31+
body:
32+
fields: ["event.dataset"]
33+
- length: { hits.hits: 4 }
34+
- match: { hits.hits.0.fields: { "event.dataset": ["apm.error"] } }
35+
- match: { hits.hits.1.fields: { "event.dataset": ["foo"] } }
36+
- match: { hits.hits.2.fields: null }
37+
- match: { hits.hits.3.fields: { "event.dataset": ["foo"] } }
38+
---
39+
"Test logs-apm.app.*-* event.dataset field":
40+
- do:
41+
bulk:
42+
index: logs-apm.app.foo-eventdataset
43+
refresh: true
44+
body:
45+
# data_stream.dataset present, event.dataset not present
46+
- create: {}
47+
- '{"@timestamp": "2017-06-22", "data_stream": {"type": "logs", "dataset": "apm.app.foo", "namespace": "eventdataset"}, "message": "foo"}'
48+
# data_stream.dataset present, event.dataset present
49+
- create: {}
50+
- '{"@timestamp": "2017-06-22", "data_stream": {"type": "logs", "dataset": "apm.app.foo", "namespace": "eventdataset"}, "event": {"dataset": "foo"}, "message": "foo"}'
51+
# unlikely: data_stream.dataset not present, event.dataset not present
52+
- create: {}
53+
- '{"@timestamp": "2017-06-22", "message": "foo"}'
54+
# unlikely: data_stream.dataset not present, event.dataset present
55+
- create: {}
56+
- '{"@timestamp": "2017-06-22", "event": {"dataset": "foo"}, "message": "foo"}'
57+
58+
- is_false: errors
59+
60+
- do:
61+
search:
62+
index: logs-apm.app.foo-eventdataset
63+
body:
64+
fields: ["event.dataset"]
65+
- length: { hits.hits: 4 }
66+
- match: { hits.hits.0.fields: { "event.dataset": ["apm.app.foo"] } }
67+
- match: { hits.hits.1.fields: { "event.dataset": ["foo"] } }
68+
- match: { hits.hits.2.fields: null }
69+
- match: { hits.hits.3.fields: { "event.dataset": ["foo"] } }
70+

0 commit comments

Comments
 (0)