You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
otel: add otel-specific fields to ingested docs (#45242)
* otel: add otelcol.component.id field to ingested docs
* adjust otelcol field name
* rename otelcol.component.id in beats event to otel.component.name
* add otel.component.type
* update metricbeatreceiver unit tests
* add integration test coverage
* update receiver name in test pipeline
* use filestream as receiver name
* revert to otelcol.component.id and otelcol.component.kind
* fix tests
* ignore fields
* ignore otel fields in gcppubsub test
* move assertion on otel fields to the up
* fix linter issues
* handle existing otelcol.component.id
* prevent otelcol fields from being replaced if they exist
* put otelcol fields nested inside agent property
* fix E2E tests
* use EventuallyWithTf
assert.Equal(c, "filebeatreceiver/r1", logs["r1"][0].Flatten()["agent.otelcol.component.id"], "expected agent.otelcol.component.id field in log record")
96
+
assert.Equal(c, "receiver", logs["r1"][0].Flatten()["agent.otelcol.component.kind"], "expected agent.otelcol.component.kind field in log record")
require.Greater(c, len(logs["r1"]), 0, "receiver r1 does not have any logs")
233
235
require.Greater(c, len(logs["r2"]), 0, "receiver r2 does not have any logs")
234
236
237
+
assert.Equal(c, "filebeatreceiver/r1", logs["r1"][0].Flatten()["agent.otelcol.component.id"], "expected agent.otelcol.component.id field in r1 log record")
238
+
assert.Equal(c, "receiver", logs["r1"][0].Flatten()["agent.otelcol.component.kind"], "expected agent.otelcol.component.kind field in r1 log record")
239
+
assert.Equal(c, "filebeatreceiver/r2", logs["r2"][0].Flatten()["agent.otelcol.component.id"], "expected agent.otelcol.component.id field in r2 log record")
240
+
assert.Equal(c, "receiver", logs["r2"][0].Flatten()["agent.otelcol.component.kind"], "expected agent.otelcol.component.kind field in r2 log record")
241
+
235
242
// Make sure that each receiver has a separate logger
236
243
// instance and does not interfere with others. Previously, the
237
244
// logger in Beats was global, causing logger fields to be
2*time.Minute, 1*time.Second, "expected at least %d events for both filebeat and otel", numEvents)
122
123
123
-
filebeatDoc:=filebeatDocs.Hits.Hits[0].Source
124
-
otelDoc:=otelDocs.Hits.Hits[0].Source
124
+
varfilebeatDoc, otelDoc mapstr.M
125
+
filebeatDoc=filebeatDocs.Hits.Hits[0].Source
126
+
otelDoc=otelDocs.Hits.Hits[0].Source
125
127
ignoredFields:= []string{
126
128
// Expected to change between agentDocs and OtelDocs
127
129
"@timestamp",
128
130
"agent.ephemeral_id",
129
131
"agent.id",
130
132
"log.file.inode",
131
133
"log.file.path",
134
+
// only present in beats receivers
135
+
"agent.otelcol.component.id",
136
+
"agent.otelcol.component.kind",
132
137
}
133
138
134
139
oteltest.AssertMapsEqual(t, filebeatDoc, otelDoc, ignoredFields, "expected documents to be equal")
140
+
141
+
assert.Equal(t, "filebeatreceiver", otelDoc.Flatten()["agent.otelcol.component.id"], "expected agent.otelcol.component.id field in log record")
142
+
assert.Equal(t, "receiver", otelDoc.Flatten()["agent.otelcol.component.kind"], "expected agent.otelcol.component.kind field in log record")
143
+
assert.NotContains(t, filebeatDoc.Flatten(), "agent.otelcol.component.id", "expected agent.otelcol.component.id field not to be present in filebeat log record")
144
+
assert.NotContains(t, filebeatDoc.Flatten(), "agent.otelcol.component.kind", "expected agent.otelcol.component.kind field not to be present in filebeat log record")
135
145
assertMonitoring(t, otelMonitoringPort)
136
146
}
137
147
@@ -252,6 +262,9 @@ processors:
252
262
"agent.ephemeral_id",
253
263
"agent.id",
254
264
"event.created",
265
+
// only present in beats receivers
266
+
"agent.otelcol.component.id",
267
+
"agent.otelcol.component.kind",
255
268
}
256
269
257
270
oteltest.AssertMapsEqual(t, filebeatDoc, otelDoc, ignoredFields, "expected documents to be equal")
2*time.Minute, 1*time.Second, "expected at least %d events for both filebeat and otel", wantEvents)
454
467
455
-
filebeatDoc:=filebeatDocs.Hits.Hits[0].Source
456
-
otelDoc:=otelDocs.Hits.Hits[0].Source
468
+
varfilebeatDoc, otelDoc mapstr.M
469
+
filebeatDoc=filebeatDocs.Hits.Hits[0].Source
470
+
otelDoc=otelDocs.Hits.Hits[0].Source
457
471
ignoredFields:= []string{
458
472
// Expected to change between agentDocs and OtelDocs
459
473
"@timestamp",
460
474
"agent.ephemeral_id",
461
475
"agent.id",
462
476
"log.file.inode",
463
477
"log.file.path",
478
+
// only present in beats receivers
479
+
"agent.otelcol.component.id",
480
+
"agent.otelcol.component.kind",
464
481
}
465
482
466
483
oteltest.AssertMapsEqual(t, filebeatDoc, otelDoc, ignoredFields, "expected documents to be equal")
484
+
assert.Equal(t, "filebeatreceiver/filestream", otelDoc.Flatten()["agent.otelcol.component.id"], "expected agent.otelcol.component.id field in log record")
485
+
assert.Equal(t, "receiver", otelDoc.Flatten()["agent.otelcol.component.kind"], "expected agent.otelcol.component.kind field in log record")
486
+
assert.NotContains(t, filebeatDoc.Flatten(), "agent.otelcol.component.id", "expected agent.otelcol.component.id field not to be present in filebeat log record")
487
+
assert.NotContains(t, filebeatDoc.Flatten(), "agent.otelcol.component.kind", "expected agent.otelcol.component.kind field not to be present in filebeat log record")
0 commit comments