diff --git a/x-pack/otel/processor/beatprocessor/README.md b/x-pack/otel/processor/beatprocessor/README.md index 4d084262e41d..422ac513cabc 100644 --- a/x-pack/otel/processor/beatprocessor/README.md +++ b/x-pack/otel/processor/beatprocessor/README.md @@ -16,6 +16,7 @@ This allows you to use Beat processors like e.g. [add_host_metadata] anywhere in Here are the currently supported processors: +- [add_cloud_metadata] - [add_host_metadata] - [add_kubernetes_metadata] @@ -118,6 +119,19 @@ exporters: debug: ``` +## Using the `add_cloud_metadata` processor + +To use the [add_cloud_metadata] processor, configure the processor as follows: + +```yaml +processors: + beat: + processors: + - add_cloud_metadata: +``` + +You can configure the cloud metadata enrichment using the options supported by the [add_cloud_metadata] processor. + ## Using the `add_host_metadata` processor To use the [add_host_metadata] processor, configure the processor as follows: diff --git a/x-pack/otel/processor/beatprocessor/processor.go b/x-pack/otel/processor/beatprocessor/processor.go index 4f611420da1d..7c5e9fd58091 100644 --- a/x-pack/otel/processor/beatprocessor/processor.go +++ b/x-pack/otel/processor/beatprocessor/processor.go @@ -11,6 +11,7 @@ import ( "github.com/elastic/beats/v7/libbeat/beat" "github.com/elastic/beats/v7/libbeat/otelbeat/otelmap" + "github.com/elastic/beats/v7/libbeat/processors/add_cloud_metadata" "github.com/elastic/beats/v7/libbeat/processors/add_host_metadata" "github.com/elastic/beats/v7/libbeat/processors/add_kubernetes_metadata" "github.com/elastic/elastic-agent-libs/config" @@ -81,6 +82,8 @@ func createProcessor(processorNameAndConfig map[string]any, logpLogger *logp.Log var createProcessorError error switch processorName { + case "add_cloud_metadata": + processorInstance, createProcessorError = add_cloud_metadata.New(processorConfig, logpLogger) case "add_host_metadata": processorInstance, createProcessorError = add_host_metadata.New(processorConfig, logpLogger) case "add_kubernetes_metadata": diff --git a/x-pack/otel/processor/beatprocessor/processor_test.go b/x-pack/otel/processor/beatprocessor/processor_test.go index 606a7c503a6a..68a6b5b3e860 100644 --- a/x-pack/otel/processor/beatprocessor/processor_test.go +++ b/x-pack/otel/processor/beatprocessor/processor_test.go @@ -66,10 +66,6 @@ func TestConsumeLogs(t *testing.T) { } } -func testLogger() *logp.Logger { - return logp.NewNopLogger() -} - func TestCreateProcessor(t *testing.T) { t.Run("nil config returns nil processor", func(t *testing.T) { processor, err := createProcessor(nil, testLogger()) @@ -100,6 +96,15 @@ func TestCreateProcessor(t *testing.T) { assert.Contains(t, err.Error(), "invalid processor name 'unknown_processor'") }) + t.Run("valid add_cloud_metadata processor config returns processor", func(t *testing.T) { + processor, err := createProcessor(map[string]any{ + "add_cloud_metadata": map[string]any{}, + }, testLogger()) + require.NoError(t, err) + require.NotNil(t, processor) + assert.Equal(t, "add_cloud_metadata", processor.String()[:len("add_cloud_metadata")]) + }) + t.Run("valid add_host_metadata processor config returns processor", func(t *testing.T) { processor, err := createProcessor(map[string]any{ "add_host_metadata": map[string]any{}, @@ -119,6 +124,10 @@ func TestCreateProcessor(t *testing.T) { }) } +func testLogger() *logp.Logger { + return logp.NewNopLogger() +} + type mockProcessor struct { runFunc func(event *beat.Event) (*beat.Event, error) }