From 6b838d9c40a71710ccbf09de25c0a48ffa6ce59d Mon Sep 17 00:00:00 2001 From: Francisco Valente Castro <1435136+franciscovalentecastro@users.noreply.github.com> Date: Thu, 23 Oct 2025 17:12:26 -0400 Subject: [PATCH 01/31] [integration_test] Add `RunForEachImageAndFeatureFlag` and improve Otel Logging integration tests. (#2102) --- integration_test/ops_agent_test/main_test.go | 341 +++++++++---------- 1 file changed, 164 insertions(+), 177 deletions(-) diff --git a/integration_test/ops_agent_test/main_test.go b/integration_test/ops_agent_test/main_test.go index 8743b91189..52dca6038a 100644 --- a/integration_test/ops_agent_test/main_test.go +++ b/integration_test/ops_agent_test/main_test.go @@ -210,38 +210,71 @@ func retrieveOtelConfig(ctx context.Context, logger *log.Logger, vm *gce.VM) (co return gce.RetrieveContent(ctx, logger, vm, agents.GetOtelConfigPath(vm.ImageSpec)) } -// defaultConfigForLoggingSubagent returns the default config that is required to choose a logging subagent. -func defaultConfigForLoggingSubagent(otel bool) string { - if otel { - // otel logging needs to be enabled explicitly - return fmt.Sprintf(`logging: - service: - experimental_otel_logging: %v`, otel) - } - // fluent-bit is used by default - return "" -} - -// RunForEachLoggingSubagent runs a subtest for the logging subagent fluent-bit and otel. -func RunForEachLoggingSubagent(t *testing.T, testBody func(t *testing.T, otel bool)) { +// RunForEachImageAndFeatureFlag runs a subtest for each image and provide feature flags. +func RunForEachImageAndFeatureFlag(t *testing.T, features []string, testBody func(t *testing.T, imageSpec string, feature string)) { t.Helper() - t.Run("fluent-bit", func(t *testing.T) { - testBody(t, false) - }) - - t.Run("otel", func(t *testing.T) { - if gce.IsOpsAgentUAPPlugin() { - t.SkipNow() + gce.RunForEachImage(t, func(t *testing.T, imageSpec string) { + t.Parallel() + t.Run(DefaultFeatureFlag, func(t *testing.T) { + testBody(t, imageSpec, DefaultFeatureFlag) + }) + for _, feature := range features { + t.Run(feature, func(t *testing.T) { + if gce.IsOpsAgentUAPPlugin() { + t.SkipNow() + } + testBody(t, imageSpec, feature) + }) } - testBody(t, true) }) } +const ( + OtelLoggingFeatureFlag = "otel_logging" + DefaultFeatureFlag = "default" +) + // setExperimentalFeatures sets the EXPERIMENTAL_FEATURES environment variable. func setExperimentalFeatures(ctx context.Context, logger *log.Logger, vm *gce.VM, feature string) error { return gce.SetEnvironmentVariables(ctx, logger, vm, map[string]string{"EXPERIMENTAL_FEATURES": feature}) } +// defaultOtelLoggingConfig returns the default config that is required to use otel_logging. +func defaultOtelLoggingConfig() string { + return `logging: + service: + experimental_otel_logging: true +` +} + +// setExperimentalOtelLoggingInConfig in an Ops Agent config +func setExperimentalOtelLoggingInConfig(config string) string { + return strings.Replace( + config, + "service:\n", + "service:\n experimental_otel_logging: true\n", + 1, + ) +} + +// SetupOpsAgentWithFeatureFlag configures the VM and the config depending on the selected feature flag. +func SetupOpsAgentWithFeatureFlag(ctx context.Context, logger *log.Logger, vm *gce.VM, config string, feature string) error { + switch feature { + case OtelLoggingFeatureFlag: + // Set feature flag in config. + if config == "" { + config = defaultOtelLoggingConfig() + } else { + config = setExperimentalOtelLoggingInConfig(config) + } + // Set experimental feature environment variable. + if err := setExperimentalFeatures(ctx, logger, vm, feature); err != nil { + return err + } + } + return agents.SetupOpsAgent(ctx, logger, vm, config) +} + func TestParseMultilineFileJava(t *testing.T) { t.Parallel() gce.RunForEachImage(t, func(t *testing.T, imageSpec string) { @@ -909,14 +942,12 @@ func TestKillChildJobsWhenPluginServerProcessTerminates(t *testing.T) { func TestCustomLogFormat(t *testing.T) { t.Parallel() - RunForEachLoggingSubagent(t, func(t *testing.T, otel bool) { + RunForEachImageAndFeatureFlag(t, []string{OtelLoggingFeatureFlag}, func(t *testing.T, imageSpec string, feature string) { t.Parallel() - gce.RunForEachImage(t, func(t *testing.T, imageSpec string) { - t.Parallel() - ctx, logger, vm := setupMainLogAndVM(t, imageSpec) + ctx, logger, vm := setupMainLogAndVM(t, imageSpec) - logPath := logPathForImage(vm.ImageSpec) - config := fmt.Sprintf(`logging: + logPath := logPathForImage(vm.ImageSpec) + config := fmt.Sprintf(`logging: receivers: mylog_source: type: files @@ -932,39 +963,31 @@ func TestCustomLogFormat(t *testing.T) { time_key: time time_format: "%s" service: - experimental_otel_logging: %v pipelines: my_pipeline: receivers: [mylog_source] processors: [rfc5424] exporters: [google] -`, logPath, "%Y-%m-%dT%H:%M:%S.%L%z", otel) - - if otel { - if err := setExperimentalFeatures(ctx, logger, vm, "otel_logging"); err != nil { - t.Fatal(err) - } - } +`, logPath, "%Y-%m-%dT%H:%M:%S.%L%z") - if err := agents.SetupOpsAgent(ctx, logger, vm, config); err != nil { - t.Fatal(err) - } + if err := SetupOpsAgentWithFeatureFlag(ctx, logger, vm, config, feature); err != nil { + t.Fatal(err) + } - zone := time.FixedZone("UTC-8", int((-8 * time.Hour).Seconds())) - line := fmt.Sprintf("<13>1 %s %s my_app_id - - - qqqqrrrr\n", time.Now().In(zone).Format(time.RFC3339Nano), vm.Name) - // TODO: b/413446913 Enable non-UTC timestamp when otel logging parsing differences are fixed. - if otel { - line = fmt.Sprintf("<13>1 %s %s my_app_id - - - qqqqrrrr\n", time.Now().UTC().Format(time.RFC3339Nano), vm.Name) - } - if err := gce.UploadContent(ctx, logger, vm, strings.NewReader(line), logPath); err != nil { - t.Fatalf("error writing dummy log line: %v", err) - } + zone := time.FixedZone("UTC-8", int((-8 * time.Hour).Seconds())) + line := fmt.Sprintf("<13>1 %s %s my_app_id - - - qqqqrrrr\n", time.Now().In(zone).Format(time.RFC3339Nano), vm.Name) + // TODO: b/413446913 Enable non-UTC timestamp when otel logging parsing differences are fixed. + if feature == OtelLoggingFeatureFlag { + line = fmt.Sprintf("<13>1 %s %s my_app_id - - - qqqqrrrr\n", time.Now().UTC().Format(time.RFC3339Nano), vm.Name) + } + if err := gce.UploadContent(ctx, logger, vm, strings.NewReader(line), logPath); err != nil { + t.Fatalf("error writing dummy log line: %v", err) + } - // window (1 hour) is *less than* the time zone UTC offset (8 hours) to catch time zone parse failures - if err := gce.WaitForLog(ctx, logger, vm, "mylog_source", time.Hour, "jsonPayload.message=qqqqrrrr AND jsonPayload.ident=my_app_id"); err != nil { - t.Error(err) - } - }) + // window (1 hour) is *less than* the time zone UTC offset (8 hours) to catch time zone parse failures + if err := gce.WaitForLog(ctx, logger, vm, "mylog_source", time.Hour, "jsonPayload.message=qqqqrrrr AND jsonPayload.ident=my_app_id"); err != nil { + t.Error(err) + } }) } @@ -1901,14 +1924,12 @@ func TestResourceNameLabel(t *testing.T) { func TestLogFilePathLabel(t *testing.T) { t.Parallel() - RunForEachLoggingSubagent(t, func(t *testing.T, otel bool) { + RunForEachImageAndFeatureFlag(t, []string{OtelLoggingFeatureFlag}, func(t *testing.T, imageSpec string, feature string) { t.Parallel() - gce.RunForEachImage(t, func(t *testing.T, imageSpec string) { - t.Parallel() - ctx, logger, vm := setupMainLogAndVM(t, imageSpec) - file1 := fmt.Sprintf("%s_1", logPathForImage(vm.ImageSpec)) + ctx, logger, vm := setupMainLogAndVM(t, imageSpec) + file1 := fmt.Sprintf("%s_1", logPathForImage(vm.ImageSpec)) - config := fmt.Sprintf(`logging: + config := fmt.Sprintf(`logging: receivers: f1: type: files @@ -1919,41 +1940,33 @@ func TestLogFilePathLabel(t *testing.T) { json: type: parse_json service: - experimental_otel_logging: %v pipelines: p1: receivers: [f1] processors: [json] -`, file1, otel) - - if otel { - if err := setExperimentalFeatures(ctx, logger, vm, "otel_logging"); err != nil { - t.Fatal(err) - } - } +`, file1) - if err := agents.SetupOpsAgent(ctx, logger, vm, config); err != nil { - t.Fatal(err) - } + if err := SetupOpsAgentWithFeatureFlag(ctx, logger, vm, config, feature); err != nil { + t.Fatal(err) + } - line := `{"default_present":"original"}` + "\n" - if err := gce.UploadContent(ctx, logger, vm, strings.NewReader(line), file1); err != nil { - t.Fatalf("error uploading log: %v", err) - } + line := `{"default_present":"original"}` + "\n" + if err := gce.UploadContent(ctx, logger, vm, strings.NewReader(line), file1); err != nil { + t.Fatalf("error uploading log: %v", err) + } - // In Windows the generated log_file_path "C:\mylog_1" uses a backslash. - // When constructing the query in WaithForLog the backslashes are escaped so - // replacing with two backslahes correctly queries for "C:\mylog_1" label. - if gce.IsWindows(imageSpec) { - file1 = strings.Replace(file1, `\`, `\\`, 1) - } + // In Windows the generated log_file_path "C:\mylog_1" uses a backslash. + // When constructing the query in WaithForLog the backslashes are escaped so + // replacing with two backslahes correctly queries for "C:\mylog_1" label. + if gce.IsWindows(imageSpec) { + file1 = strings.Replace(file1, `\`, `\\`, 1) + } - // Expect to see log with label added. - check := fmt.Sprintf(`labels."agent.googleapis.com/log_file_path"="%s" AND jsonPayload.default_present="original"`, file1) - if err := gce.WaitForLog(ctx, logger, vm, "f1", time.Hour, check); err != nil { - t.Error(err) - } - }) + // Expect to see log with label added. + check := fmt.Sprintf(`labels."agent.googleapis.com/log_file_path"="%s" AND jsonPayload.default_present="original"`, file1) + if err := gce.WaitForLog(ctx, logger, vm, "f1", time.Hour, check); err != nil { + t.Error(err) + } }) } @@ -2538,63 +2551,53 @@ func TestWindowsEventLogWithNonDefaultTimeZone(t *testing.T) { func TestSystemdLog(t *testing.T) { t.Parallel() - RunForEachLoggingSubagent(t, func(t *testing.T, otel bool) { + RunForEachImageAndFeatureFlag(t, []string{OtelLoggingFeatureFlag}, func(t *testing.T, imageSpec string, feature string) { t.Parallel() - gce.RunForEachImage(t, func(t *testing.T, imageSpec string) { - t.Parallel() - if gce.IsWindows(imageSpec) { - t.SkipNow() - } - ctx, logger, vm := setupMainLogAndVM(t, imageSpec) + if gce.IsWindows(imageSpec) { + t.SkipNow() + } + ctx, logger, vm := setupMainLogAndVM(t, imageSpec) - config := fmt.Sprintf(`logging: + config := `logging: receivers: systemd_logs: type: systemd_journald service: - experimental_otel_logging: %v pipelines: systemd_pipeline: receivers: [systemd_logs] -`, otel) - - if otel { - if err := setExperimentalFeatures(ctx, logger, vm, "otel_logging"); err != nil { - t.Fatal(err) - } - } +` - if err := agents.SetupOpsAgent(ctx, logger, vm, config); err != nil { - t.Fatal(err) - } + if err := SetupOpsAgentWithFeatureFlag(ctx, logger, vm, config, feature); err != nil { + t.Fatal(err) + } - if _, err := gce.RunRemotely(ctx, logger, vm, "echo 'my_systemd_info_log_message' | systemd-cat --priority=info"); err != nil { - t.Fatalf("Error writing dummy Systemd log line: %v", err) - } + if _, err := gce.RunRemotely(ctx, logger, vm, "echo 'my_systemd_info_log_message' | systemd-cat --priority=info"); err != nil { + t.Fatalf("Error writing dummy Systemd log line: %v", err) + } - querySystemdInfoLog := `severity="INFO" AND jsonPayload.MESSAGE="my_systemd_info_log_message" AND jsonPayload.PRIORITY="6"` - if err := gce.WaitForLog(ctx, logger, vm, "systemd_logs", time.Hour, querySystemdInfoLog); err != nil { - t.Error(err) - } + querySystemdInfoLog := `severity="INFO" AND jsonPayload.MESSAGE="my_systemd_info_log_message" AND jsonPayload.PRIORITY="6"` + if err := gce.WaitForLog(ctx, logger, vm, "systemd_logs", time.Hour, querySystemdInfoLog); err != nil { + t.Error(err) + } - if _, err := gce.RunRemotely(ctx, logger, vm, "echo 'my_systemd_error_log_message' | systemd-cat --priority=err"); err != nil { - t.Fatalf("Error writing dummy Systemd log line: %v", err) - } + if _, err := gce.RunRemotely(ctx, logger, vm, "echo 'my_systemd_error_log_message' | systemd-cat --priority=err"); err != nil { + t.Fatalf("Error writing dummy Systemd log line: %v", err) + } - querySystemdErrorLog := `severity="ERROR" AND jsonPayload.MESSAGE="my_systemd_error_log_message" AND jsonPayload.PRIORITY="3"` - if err := gce.WaitForLog(ctx, logger, vm, "systemd_logs", time.Hour, querySystemdErrorLog); err != nil { - t.Error(err) - } + querySystemdErrorLog := `severity="ERROR" AND jsonPayload.MESSAGE="my_systemd_error_log_message" AND jsonPayload.PRIORITY="3"` + if err := gce.WaitForLog(ctx, logger, vm, "systemd_logs", time.Hour, querySystemdErrorLog); err != nil { + t.Error(err) + } - if _, err := gce.RunRemotely(ctx, logger, vm, "echo 'my_systemd_notice_log_message' | systemd-cat --priority=notice"); err != nil { - t.Fatalf("Error writing dummy Systemd log line: %v", err) - } + if _, err := gce.RunRemotely(ctx, logger, vm, "echo 'my_systemd_notice_log_message' | systemd-cat --priority=notice"); err != nil { + t.Fatalf("Error writing dummy Systemd log line: %v", err) + } - querySystemdNoticeLog := `severity="NOTICE" AND jsonPayload.MESSAGE="my_systemd_notice_log_message" AND jsonPayload.PRIORITY="5"` - if err := gce.WaitForLog(ctx, logger, vm, "systemd_logs", time.Hour, querySystemdNoticeLog); err != nil { - t.Error(err) - } - }) + querySystemdNoticeLog := `severity="NOTICE" AND jsonPayload.MESSAGE="my_systemd_notice_log_message" AND jsonPayload.PRIORITY="5"` + if err := gce.WaitForLog(ctx, logger, vm, "systemd_logs", time.Hour, querySystemdNoticeLog); err != nil { + t.Error(err) + } }) } @@ -2737,67 +2740,51 @@ func testDefaultMetrics(ctx context.Context, t *testing.T, logger *log.Logger, v func TestDefaultMetricsNoProxy(t *testing.T) { t.Parallel() - RunForEachLoggingSubagent(t, func(t *testing.T, otel bool) { + RunForEachImageAndFeatureFlag(t, []string{OtelLoggingFeatureFlag}, func(t *testing.T, imageSpec string, feature string) { t.Parallel() - gce.RunForEachImage(t, func(t *testing.T, imageSpec string) { - t.Parallel() - ctx, logger, vm := setupMainLogAndVM(t, imageSpec) - if otel { - if err := setExperimentalFeatures(ctx, logger, vm, "otel_logging"); err != nil { - t.Fatal(err) - } - } - if err := agents.SetupOpsAgent(ctx, logger, vm, defaultConfigForLoggingSubagent(otel)); err != nil { - t.Fatal(err) - } + ctx, logger, vm := setupMainLogAndVM(t, imageSpec) + if err := SetupOpsAgentWithFeatureFlag(ctx, logger, vm, "", feature); err != nil { + t.Fatal(err) + } - // Wait at least a minute since feature_tracking and enabled_receivers - // metrics are sent one minute after agent startup - time.Sleep(2 * time.Minute) + // Wait at least a minute since feature_tracking and enabled_receivers + // metrics are sent one minute after agent startup + time.Sleep(2 * time.Minute) - testDefaultMetrics(ctx, t, logger, vm, time.Hour) - }) + testDefaultMetrics(ctx, t, logger, vm, time.Hour) }) } // go/sdi-integ-test#proxy-testing func TestDefaultMetricsWithProxy(t *testing.T) { t.Parallel() - RunForEachLoggingSubagent(t, func(t *testing.T, otel bool) { + RunForEachImageAndFeatureFlag(t, []string{OtelLoggingFeatureFlag}, func(t *testing.T, imageSpec string, feature string) { t.Parallel() - gce.RunForEachImage(t, func(t *testing.T, imageSpec string) { - t.Parallel() - if !gce.IsWindows(imageSpec) { - t.Skip("Proxy test is currently only supported on windows.") - } - proxySettingsVal, proxySettingsPresent := os.LookupEnv("PROXY_SETTINGS") - if !proxySettingsPresent { - t.Skip("No proxy settings were set in the global PROXY_SETTINGS variable.") - } - settings := make(map[string]string) - if err := json.Unmarshal([]byte(proxySettingsVal), &settings); err != nil { - t.Fatal(err) - } - ctx, logger, vm := setupMainLogAndVM(t, imageSpec) - if err := gce.SetEnvironmentVariables(ctx, logger, vm, settings); err != nil { - t.Fatal(err) - } - if otel { - if err := setExperimentalFeatures(ctx, logger, vm, "otel_logging"); err != nil { - t.Fatal(err) - } - } - if err := agents.SetupOpsAgent(ctx, logger, vm, defaultConfigForLoggingSubagent(otel)); err != nil { - t.Fatal(err) - } + if !gce.IsWindows(imageSpec) { + t.Skip("Proxy test is currently only supported on windows.") + } + proxySettingsVal, proxySettingsPresent := os.LookupEnv("PROXY_SETTINGS") + if !proxySettingsPresent { + t.Skip("No proxy settings were set in the global PROXY_SETTINGS variable.") + } + settings := make(map[string]string) + if err := json.Unmarshal([]byte(proxySettingsVal), &settings); err != nil { + t.Fatal(err) + } + ctx, logger, vm := setupMainLogAndVM(t, imageSpec) + if err := gce.SetEnvironmentVariables(ctx, logger, vm, settings); err != nil { + t.Fatal(err) + } + if err := SetupOpsAgentWithFeatureFlag(ctx, logger, vm, "", feature); err != nil { + t.Fatal(err) + } - if err := gce.RemoveExternalIP(ctx, logger, vm); err != nil { - t.Fatal(err) - } - // Sleep for 3 minutes to make sure that if any metrics were sent between agent install and removal of the IP address, then they will fall out of the 2 minute window. - time.Sleep(3 * time.Minute) - testDefaultMetrics(ctx, t, logger, vm, 2*time.Minute) - }) + if err := gce.RemoveExternalIP(ctx, logger, vm); err != nil { + t.Fatal(err) + } + // Sleep for 3 minutes to make sure that if any metrics were sent between agent install and removal of the IP address, then they will fall out of the 2 minute window. + time.Sleep(3 * time.Minute) + testDefaultMetrics(ctx, t, logger, vm, 2*time.Minute) }) } From 9fd636576abcc4183509e4dc6a4b4de479c446d7 Mon Sep 17 00:00:00 2001 From: Francisco Valente Castro <1435136+franciscovalentecastro@users.noreply.github.com> Date: Mon, 27 Oct 2025 18:43:26 -0400 Subject: [PATCH 02/31] [confgenerator] Replace `IsMatch` with `IsMatchRubyRegex` in Otel Logging. (#2091) --- confgenerator/filter/internal/ast/ast.go | 16 +- confgenerator/otel/ottl/ottl.go | 4 + .../golden/linux-gpu/error | 1 - .../golden/linux/error | 1 - .../golden/windows-2012/error | 1 - .../golden/windows/error | 1 - .../EXPERIMENTAL_FEATURES | 1 + .../0f15dbe303dc7122d43443c9a4c31632.lua | 0 .../4d6012ff003886818fb9b9285b4af962.lua | 0 .../5fc5f42c16c9e1ab8292e3d42f74f3be.lua | 0 .../b4a0dead382dce7b4fe011d3f59fdb6d.lua | 0 .../linux-gpu/enabled_receivers_otlp.json | 1 + .../linux-gpu/feature_tracking_otlp.json | 1 + .../golden/linux-gpu/features.yaml | 208 +++ .../golden/linux-gpu/fluent_bit_main.conf | 0 .../golden/linux-gpu/fluent_bit_parser.conf | 13 + .../golden/linux-gpu/otel.yaml | 986 ++++++++++++ .../0f15dbe303dc7122d43443c9a4c31632.lua | 0 .../4d6012ff003886818fb9b9285b4af962.lua | 0 .../5fc5f42c16c9e1ab8292e3d42f74f3be.lua | 0 .../b4a0dead382dce7b4fe011d3f59fdb6d.lua | 0 .../golden/linux/enabled_receivers_otlp.json | 1 + .../golden/linux/feature_tracking_otlp.json | 1 + .../golden/linux/features.yaml | 208 +++ .../golden/linux/fluent_bit_main.conf | 0 .../golden/linux/fluent_bit_parser.conf | 13 + .../golden/linux/otel.yaml | 946 +++++++++++ .../0f15dbe303dc7122d43443c9a4c31632.lua | 0 .../4d6012ff003886818fb9b9285b4af962.lua | 0 .../5fc5f42c16c9e1ab8292e3d42f74f3be.lua | 0 .../b4a0dead382dce7b4fe011d3f59fdb6d.lua | 0 .../windows-2012/enabled_receivers_otlp.json | 1 + .../windows-2012/feature_tracking_otlp.json | 1 + .../golden/windows-2012/features.yaml | 208 +++ .../golden/windows-2012/fluent_bit_main.conf | 0 .../windows-2012/fluent_bit_parser.conf | 13 + .../golden/windows-2012/otel.yaml | 1395 +++++++++++++++++ .../0f15dbe303dc7122d43443c9a4c31632.lua | 0 .../4d6012ff003886818fb9b9285b4af962.lua | 0 .../5fc5f42c16c9e1ab8292e3d42f74f3be.lua | 0 .../b4a0dead382dce7b4fe011d3f59fdb6d.lua | 0 .../windows/enabled_receivers_otlp.json | 1 + .../golden/windows/feature_tracking_otlp.json | 1 + .../golden/windows/features.yaml | 208 +++ .../golden/windows/fluent_bit_main.conf | 0 .../golden/windows/fluent_bit_parser.conf | 13 + .../golden/windows/otel.yaml | 1395 +++++++++++++++++ .../input.yaml | 125 ++ .../golden/linux-gpu/otel.yaml | 2 +- .../golden/linux/otel.yaml | 2 +- .../golden/windows-2012/otel.yaml | 2 +- .../golden/windows/otel.yaml | 2 +- .../EXPERIMENTAL_FEATURES | 0 .../0f15dbe303dc7122d43443c9a4c31632.lua | 28 + .../4d6012ff003886818fb9b9285b4af962.lua | 19 + .../5fc5f42c16c9e1ab8292e3d42f74f3be.lua | 49 + .../b4a0dead382dce7b4fe011d3f59fdb6d.lua | 17 + .../linux-gpu/enabled_receivers_otlp.json | 1 + .../linux-gpu/feature_tracking_otlp.json | 1 + .../golden/linux-gpu/features.yaml | 24 + .../golden/linux-gpu/fluent_bit_main.conf | 153 ++ .../golden/linux-gpu/fluent_bit_parser.conf | 13 + .../golden/linux-gpu/otel.yaml | 856 ++++++++++ .../0f15dbe303dc7122d43443c9a4c31632.lua | 28 + .../4d6012ff003886818fb9b9285b4af962.lua | 19 + .../5fc5f42c16c9e1ab8292e3d42f74f3be.lua | 49 + .../b4a0dead382dce7b4fe011d3f59fdb6d.lua | 17 + .../golden/linux/enabled_receivers_otlp.json | 1 + .../golden/linux/feature_tracking_otlp.json | 1 + .../golden/linux/features.yaml | 24 + .../golden/linux/fluent_bit_main.conf | 153 ++ .../golden/linux/fluent_bit_parser.conf | 13 + .../golden/linux/otel.yaml | 816 ++++++++++ .../0f15dbe303dc7122d43443c9a4c31632.lua | 28 + .../4d6012ff003886818fb9b9285b4af962.lua | 19 + .../5fc5f42c16c9e1ab8292e3d42f74f3be.lua | 49 + .../b4a0dead382dce7b4fe011d3f59fdb6d.lua | 17 + .../windows-2012/enabled_receivers_otlp.json | 1 + .../windows-2012/feature_tracking_otlp.json | 1 + .../golden/windows-2012/features.yaml | 24 + .../golden/windows-2012/fluent_bit_main.conf | 153 ++ .../windows-2012/fluent_bit_parser.conf | 13 + .../golden/windows-2012/otel.yaml | 1265 +++++++++++++++ .../0f15dbe303dc7122d43443c9a4c31632.lua | 28 + .../4d6012ff003886818fb9b9285b4af962.lua | 19 + .../5fc5f42c16c9e1ab8292e3d42f74f3be.lua | 49 + .../b4a0dead382dce7b4fe011d3f59fdb6d.lua | 17 + .../windows/enabled_receivers_otlp.json | 1 + .../golden/windows/feature_tracking_otlp.json | 1 + .../golden/windows/features.yaml | 24 + .../golden/windows/fluent_bit_main.conf | 153 ++ .../golden/windows/fluent_bit_parser.conf | 13 + .../golden/windows/otel.yaml | 1265 +++++++++++++++ .../input.yaml | 0 .../linux-gpu/feature_tracking_otlp.json | 2 +- .../golden/linux-gpu/features.yaml | 2 +- .../golden/linux/feature_tracking_otlp.json | 2 +- .../golden/linux/features.yaml | 2 +- .../windows-2012/feature_tracking_otlp.json | 2 +- .../golden/windows-2012/features.yaml | 2 +- .../golden/windows/feature_tracking_otlp.json | 2 +- .../golden/windows/features.yaml | 2 +- integration_test/ops_agent_test/main_test.go | 38 +- .../config.yaml | 5 + .../input.log | 2 + .../output_fluentbit.yaml | 8 + .../output_otel.yaml | 5 + transformation_test/transformation_test.go | 30 +- 108 files changed, 11248 insertions(+), 50 deletions(-) delete mode 100644 confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/error delete mode 100644 confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/linux/error delete mode 100644 confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/windows-2012/error delete mode 100644 confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/windows/error create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/EXPERIMENTAL_FEATURES rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_exclude_logs}/golden/linux-gpu/0f15dbe303dc7122d43443c9a4c31632.lua (100%) rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_exclude_logs}/golden/linux-gpu/4d6012ff003886818fb9b9285b4af962.lua (100%) rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_exclude_logs}/golden/linux-gpu/5fc5f42c16c9e1ab8292e3d42f74f3be.lua (100%) rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_exclude_logs}/golden/linux-gpu/b4a0dead382dce7b4fe011d3f59fdb6d.lua (100%) create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/enabled_receivers_otlp.json create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/feature_tracking_otlp.json create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/features.yaml rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_exclude_logs}/golden/linux-gpu/fluent_bit_main.conf (100%) create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/fluent_bit_parser.conf create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/otel.yaml rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_exclude_logs}/golden/linux/0f15dbe303dc7122d43443c9a4c31632.lua (100%) rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_exclude_logs}/golden/linux/4d6012ff003886818fb9b9285b4af962.lua (100%) rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_exclude_logs}/golden/linux/5fc5f42c16c9e1ab8292e3d42f74f3be.lua (100%) rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_exclude_logs}/golden/linux/b4a0dead382dce7b4fe011d3f59fdb6d.lua (100%) create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux/enabled_receivers_otlp.json create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux/feature_tracking_otlp.json create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux/features.yaml rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_exclude_logs}/golden/linux/fluent_bit_main.conf (100%) create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux/fluent_bit_parser.conf create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux/otel.yaml rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_exclude_logs}/golden/windows-2012/0f15dbe303dc7122d43443c9a4c31632.lua (100%) rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_exclude_logs}/golden/windows-2012/4d6012ff003886818fb9b9285b4af962.lua (100%) rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_exclude_logs}/golden/windows-2012/5fc5f42c16c9e1ab8292e3d42f74f3be.lua (100%) rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_exclude_logs}/golden/windows-2012/b4a0dead382dce7b4fe011d3f59fdb6d.lua (100%) create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/windows-2012/enabled_receivers_otlp.json create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/windows-2012/feature_tracking_otlp.json create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/windows-2012/features.yaml rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_exclude_logs}/golden/windows-2012/fluent_bit_main.conf (100%) create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/windows-2012/fluent_bit_parser.conf create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/windows-2012/otel.yaml rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_exclude_logs}/golden/windows/0f15dbe303dc7122d43443c9a4c31632.lua (100%) rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_exclude_logs}/golden/windows/4d6012ff003886818fb9b9285b4af962.lua (100%) rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_exclude_logs}/golden/windows/5fc5f42c16c9e1ab8292e3d42f74f3be.lua (100%) rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_exclude_logs}/golden/windows/b4a0dead382dce7b4fe011d3f59fdb6d.lua (100%) create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/windows/enabled_receivers_otlp.json create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/windows/feature_tracking_otlp.json create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/windows/features.yaml rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_exclude_logs}/golden/windows/fluent_bit_main.conf (100%) create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/windows/fluent_bit_parser.conf create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/windows/otel.yaml create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/input.yaml rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_modify_fields_ruby_regex}/EXPERIMENTAL_FEATURES (100%) create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/0f15dbe303dc7122d43443c9a4c31632.lua create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/4d6012ff003886818fb9b9285b4af962.lua create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/5fc5f42c16c9e1ab8292e3d42f74f3be.lua create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/b4a0dead382dce7b4fe011d3f59fdb6d.lua create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/enabled_receivers_otlp.json create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/feature_tracking_otlp.json create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/features.yaml create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/fluent_bit_main.conf create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/fluent_bit_parser.conf create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/otel.yaml create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/linux/0f15dbe303dc7122d43443c9a4c31632.lua create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/linux/4d6012ff003886818fb9b9285b4af962.lua create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/linux/5fc5f42c16c9e1ab8292e3d42f74f3be.lua create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/linux/b4a0dead382dce7b4fe011d3f59fdb6d.lua create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/linux/enabled_receivers_otlp.json create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/linux/feature_tracking_otlp.json create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/linux/features.yaml create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/linux/fluent_bit_main.conf create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/linux/fluent_bit_parser.conf create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/linux/otel.yaml create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/windows-2012/0f15dbe303dc7122d43443c9a4c31632.lua create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/windows-2012/4d6012ff003886818fb9b9285b4af962.lua create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/windows-2012/5fc5f42c16c9e1ab8292e3d42f74f3be.lua create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/windows-2012/b4a0dead382dce7b4fe011d3f59fdb6d.lua create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/windows-2012/enabled_receivers_otlp.json create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/windows-2012/feature_tracking_otlp.json create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/windows-2012/features.yaml create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/windows-2012/fluent_bit_main.conf create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/windows-2012/fluent_bit_parser.conf create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/windows-2012/otel.yaml create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/windows/0f15dbe303dc7122d43443c9a4c31632.lua create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/windows/4d6012ff003886818fb9b9285b4af962.lua create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/windows/5fc5f42c16c9e1ab8292e3d42f74f3be.lua create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/windows/b4a0dead382dce7b4fe011d3f59fdb6d.lua create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/windows/enabled_receivers_otlp.json create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/windows/feature_tracking_otlp.json create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/windows/features.yaml create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/windows/fluent_bit_main.conf create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/windows/fluent_bit_parser.conf create mode 100644 confgenerator/testdata/goldens/logging-otel-processor_modify_fields_ruby_regex/golden/windows/otel.yaml rename confgenerator/testdata/goldens/{invalid-logging-otel-processor_modify_fields_ruby_regex => logging-otel-processor_modify_fields_ruby_regex}/input.yaml (100%) create mode 100644 transformation_test/testdata/logging_processor-parse_regex_invalid_regex/config.yaml create mode 100644 transformation_test/testdata/logging_processor-parse_regex_invalid_regex/input.log create mode 100644 transformation_test/testdata/logging_processor-parse_regex_invalid_regex/output_fluentbit.yaml create mode 100644 transformation_test/testdata/logging_processor-parse_regex_invalid_regex/output_otel.yaml diff --git a/confgenerator/filter/internal/ast/ast.go b/confgenerator/filter/internal/ast/ast.go index 937dcc4d6c..db8943dd2d 100644 --- a/confgenerator/filter/internal/ast/ast.go +++ b/confgenerator/filter/internal/ast/ast.go @@ -498,23 +498,23 @@ func (r Restriction) OTTLExpression() (ottl.Value, error) { return nil, fmt.Errorf("unimplemented operator: %s", r.Operator) case ":": // substring match, case insensitive - expr = ottl.IsMatch(lhs, fmt.Sprintf(`(?i)%s`, regexp.QuoteMeta(r.RHS))) + expr = ottl.IsMatchRubyRegex(lhs, fmt.Sprintf(`(?i)%s`, regexp.QuoteMeta(r.RHS))) case "=~", "!~": // regex match, case sensitive - if _, err := regexp.Compile(r.RHS); err != nil { - return nil, fmt.Errorf("unsupported regex %q: %w", r.RHS, err) - } - - expr = ottl.IsMatch(lhs, r.RHS) - // TODO: Support Ruby regex syntax + // TODO: b/436898109 - Enable regex validity config checks when Ruby Regex library + // is added to the Ops Agent build. This requires "CGO_ENABLED=1". + // if _, err := regexp.Compile(r.RHS); err != nil { + // return nil, fmt.Errorf("unsupported regex %q: %w", r.RHS, err) + //} + expr = ottl.IsMatchRubyRegex(lhs, r.RHS) if r.Operator == "!~" { expr = ottl.Not(expr) } case "=", "!=": // equality, case insensitive - expr = ottl.IsMatch(lhs, fmt.Sprintf(`(?i)^%s$`, regexp.QuoteMeta(r.RHS))) + expr = ottl.IsMatchRubyRegex(lhs, fmt.Sprintf(`(?i)^%s$`, regexp.QuoteMeta(r.RHS))) if r.Operator == "!=" { expr = ottl.Not(expr) } diff --git a/confgenerator/otel/ottl/ottl.go b/confgenerator/otel/ottl/ottl.go index c0486da1ee..64435f8119 100644 --- a/confgenerator/otel/ottl/ottl.go +++ b/confgenerator/otel/ottl/ottl.go @@ -188,6 +188,10 @@ func IsMatch(target Value, pattern string) Value { return valuef(`IsMatch(%s, %q)`, target, pattern) } +func IsMatchRubyRegex(target Value, pattern string) Value { + return valuef(`IsMatchRubyRegex(%s, %q)`, target, pattern) +} + func Equals(a, b Value) Value { return valuef(`%s == %s`, a, b) } diff --git a/confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/error b/confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/error deleted file mode 100644 index c5a6bfcb3f..0000000000 --- a/confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/error +++ /dev/null @@ -1 +0,0 @@ -processor "simple" has invalid configuration: failed to parse omit_if condition "jsonPayload.omitted =~ \"(?!foo)bar\"": unsupported regex "(?!foo)bar": error parsing regexp: invalid or unsupported Perl syntax: `(?!` \ No newline at end of file diff --git a/confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/linux/error b/confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/linux/error deleted file mode 100644 index c5a6bfcb3f..0000000000 --- a/confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/linux/error +++ /dev/null @@ -1 +0,0 @@ -processor "simple" has invalid configuration: failed to parse omit_if condition "jsonPayload.omitted =~ \"(?!foo)bar\"": unsupported regex "(?!foo)bar": error parsing regexp: invalid or unsupported Perl syntax: `(?!` \ No newline at end of file diff --git a/confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/windows-2012/error b/confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/windows-2012/error deleted file mode 100644 index c5a6bfcb3f..0000000000 --- a/confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/windows-2012/error +++ /dev/null @@ -1 +0,0 @@ -processor "simple" has invalid configuration: failed to parse omit_if condition "jsonPayload.omitted =~ \"(?!foo)bar\"": unsupported regex "(?!foo)bar": error parsing regexp: invalid or unsupported Perl syntax: `(?!` \ No newline at end of file diff --git a/confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/windows/error b/confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/windows/error deleted file mode 100644 index c5a6bfcb3f..0000000000 --- a/confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/windows/error +++ /dev/null @@ -1 +0,0 @@ -processor "simple" has invalid configuration: failed to parse omit_if condition "jsonPayload.omitted =~ \"(?!foo)bar\"": unsupported regex "(?!foo)bar": error parsing regexp: invalid or unsupported Perl syntax: `(?!` \ No newline at end of file diff --git a/confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/EXPERIMENTAL_FEATURES b/confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/EXPERIMENTAL_FEATURES new file mode 100644 index 0000000000..d934c8d47b --- /dev/null +++ b/confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/EXPERIMENTAL_FEATURES @@ -0,0 +1 @@ +otel_logging diff --git a/confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/0f15dbe303dc7122d43443c9a4c31632.lua b/confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/0f15dbe303dc7122d43443c9a4c31632.lua similarity index 100% rename from confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/0f15dbe303dc7122d43443c9a4c31632.lua rename to confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/0f15dbe303dc7122d43443c9a4c31632.lua diff --git a/confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/4d6012ff003886818fb9b9285b4af962.lua b/confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/4d6012ff003886818fb9b9285b4af962.lua similarity index 100% rename from confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/4d6012ff003886818fb9b9285b4af962.lua rename to confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/4d6012ff003886818fb9b9285b4af962.lua diff --git a/confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/5fc5f42c16c9e1ab8292e3d42f74f3be.lua b/confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/5fc5f42c16c9e1ab8292e3d42f74f3be.lua similarity index 100% rename from confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/5fc5f42c16c9e1ab8292e3d42f74f3be.lua rename to confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/5fc5f42c16c9e1ab8292e3d42f74f3be.lua diff --git a/confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/b4a0dead382dce7b4fe011d3f59fdb6d.lua b/confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/b4a0dead382dce7b4fe011d3f59fdb6d.lua similarity index 100% rename from confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/b4a0dead382dce7b4fe011d3f59fdb6d.lua rename to confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/b4a0dead382dce7b4fe011d3f59fdb6d.lua diff --git a/confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/enabled_receivers_otlp.json b/confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/enabled_receivers_otlp.json new file mode 100644 index 0000000000..b936b3a79c --- /dev/null +++ b/confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/enabled_receivers_otlp.json @@ -0,0 +1 @@ +{"resourceMetrics":[{"resource":{"attributes":[{"key":"k","value":{"stringValue":"v"}}]},"scopeMetrics":[{"scope":{},"metrics":[{"name":"agent.googleapis.com/agent/ops_agent/enabled_receivers","gauge":{"dataPoints":[{"attributes":[{"key":"telemetry_type","value":{"stringValue":"metrics"}},{"key":"receiver_type","value":{"stringValue":"hostmetrics"}}],"asInt":"1"},{"attributes":[{"key":"telemetry_type","value":{"stringValue":"logs"}},{"key":"receiver_type","value":{"stringValue":"files"}}],"asInt":"2"}]}}]}]}]} \ No newline at end of file diff --git a/confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/feature_tracking_otlp.json b/confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/feature_tracking_otlp.json new file mode 100644 index 0000000000..88d146765c --- /dev/null +++ b/confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/feature_tracking_otlp.json @@ -0,0 +1 @@ +{"resourceMetrics":[{"resource":{"attributes":[{"key":"k","value":{"stringValue":"v"}}]},"scopeMetrics":[{"scope":{},"metrics":[{"name":"agent.googleapis.com/agent/internal/ops/feature_tracking","gauge":{"dataPoints":[{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"service:pipelines"}},{"key":"key","value":{"stringValue":"default_pipeline_overridden"}},{"key":"value","value":{"stringValue":"false"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"metrics"}},{"key":"feature","value":{"stringValue":"service:pipelines"}},{"key":"key","value":{"stringValue":"default_pipeline_overridden"}},{"key":"value","value":{"stringValue":"false"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"global"}},{"key":"feature","value":{"stringValue":"default:self_log"}},{"key":"key","value":{"stringValue":"default_self_log_file_collection"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"service:otel_logging"}},{"key":"key","value":{"stringValue":"otel_logging_supported_config"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"receivers:files"}},{"key":"key","value":{"stringValue":"[0].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"receivers:files"}},{"key":"key","value":{"stringValue":"[0].include_paths.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[0].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[0].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[1].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[1].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[2].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[2].match_any.__length"}},{"key":"value","value":{"stringValue":"2"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[3].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[3].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[4].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[4].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[5].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[5].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[6].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[6].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[7].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[7].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[8].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[8].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[9].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[9].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[10].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[10].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[11].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[11].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[12].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[12].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[13].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[13].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[14].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[14].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[15].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[15].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[16].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[16].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[17].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[17].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[18].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[18].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[19].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[19].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[20].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[20].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[21].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[21].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[22].enabled"}},{"key":"value","value":{"stringValue":"true"}}],"asInt":"1"},{"attributes":[{"key":"module","value":{"stringValue":"logging"}},{"key":"feature","value":{"stringValue":"processors:exclude_logs"}},{"key":"key","value":{"stringValue":"[22].match_any.__length"}},{"key":"value","value":{"stringValue":"1"}}],"asInt":"1"}]}}]}]}]} \ No newline at end of file diff --git a/confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/features.yaml b/confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/features.yaml new file mode 100644 index 0000000000..94f56f78c5 --- /dev/null +++ b/confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/features.yaml @@ -0,0 +1,208 @@ +- module: logging + feature: service:pipelines + key: default_pipeline_overridden + value: "false" +- module: metrics + feature: service:pipelines + key: default_pipeline_overridden + value: "false" +- module: global + feature: default:self_log + key: default_self_log_file_collection + value: "true" +- module: logging + feature: service:otel_logging + key: otel_logging_supported_config + value: "true" +- module: logging + feature: receivers:files + key: "[0].enabled" + value: "true" +- module: logging + feature: receivers:files + key: "[0].include_paths.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[0].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[0].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[1].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[1].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[2].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[2].match_any.__length" + value: "2" +- module: logging + feature: processors:exclude_logs + key: "[3].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[3].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[4].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[4].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[5].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[5].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[6].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[6].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[7].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[7].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[8].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[8].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[9].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[9].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[10].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[10].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[11].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[11].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[12].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[12].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[13].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[13].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[14].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[14].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[15].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[15].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[16].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[16].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[17].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[17].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[18].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[18].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[19].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[19].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[20].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[20].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[21].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[21].match_any.__length" + value: "1" +- module: logging + feature: processors:exclude_logs + key: "[22].enabled" + value: "true" +- module: logging + feature: processors:exclude_logs + key: "[22].match_any.__length" + value: "1" diff --git a/confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/fluent_bit_main.conf b/confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/fluent_bit_main.conf similarity index 100% rename from confgenerator/testdata/goldens/invalid-logging-otel-processor_modify_fields_ruby_regex/golden/linux-gpu/fluent_bit_main.conf rename to confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/fluent_bit_main.conf diff --git a/confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/fluent_bit_parser.conf b/confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/fluent_bit_parser.conf new file mode 100644 index 0000000000..e6c4f531ea --- /dev/null +++ b/confgenerator/testdata/goldens/logging-otel-processor_exclude_logs/golden/linux-gpu/fluent_bit_parser.conf @@ -0,0 +1,13 @@ +[PARSER] + Format regex + Name ops-agent-fluent-bit.fluent-bit-self-log-regex-parsing + Regex (?\[[ ]*(?