diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 6c67e8389ee6..0c67271c74cf 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1030,6 +1030,7 @@ /test/benchmarks/apm_scripts/ @DataDog/agent-apm /test/regression/ @DataDog/single-machine-performance /test/regression/ebpf @DataDog/single-machine-performance @DataDog/ebpf-platform +/test/regression/logs/ @DataDog/agent-log-pipelines /test/regression/quality_gates/cases/quality_gate_security_* @DataDog/single-machine-performance @DataDog/agent-security /test/regression/quality_gates/cases/quality_gate_private_action_runner* @DataDog/single-machine-performance @DataDog/action-platform /test/regression/selection.yaml @DataDog/single-machine-performance diff --git a/test/regression/logs/README.md b/test/regression/logs/README.md new file mode 100644 index 000000000000..af18d1c15c6d --- /dev/null +++ b/test/regression/logs/README.md @@ -0,0 +1,9 @@ +--- +description: Log-pipeline regression experiments. +--- + +# Logs + +Organizational grouping for log-pipeline regression experiments. Selectable +suites live in the sub-folders (e.g. `general`, `syslog`); this directory itself +holds no experiments. diff --git a/test/regression/logs/general/README.md b/test/regression/logs/general/README.md new file mode 100644 index 000000000000..b470a4a95b24 --- /dev/null +++ b/test/regression/logs/general/README.md @@ -0,0 +1,9 @@ +--- +description: General log-pipeline regression suite. +--- + +# Logs — general + +Ownership-driven suite: runs automatically when the owning team +(`agent-log-pipelines`, per `.github/CODEOWNERS`) changes a file on a PR. Placed +in the `codeowners` bucket of `selection.yaml`. diff --git a/test/regression/logs/general/cases/file_to_blackhole_0ms_latency/datadog-agent/conf.d/disk-listener.d/conf.yaml b/test/regression/logs/general/cases/file_to_blackhole_0ms_latency/datadog-agent/conf.d/disk-listener.d/conf.yaml new file mode 100644 index 000000000000..ec51a59de1c4 --- /dev/null +++ b/test/regression/logs/general/cases/file_to_blackhole_0ms_latency/datadog-agent/conf.d/disk-listener.d/conf.yaml @@ -0,0 +1,5 @@ +logs: + - type: file + path: "/smp-shared/*.log" + service: "my-service" + source: "my-client-app" diff --git a/test/regression/logs/general/cases/file_to_blackhole_0ms_latency/datadog-agent/datadog.yaml b/test/regression/logs/general/cases/file_to_blackhole_0ms_latency/datadog-agent/datadog.yaml new file mode 100644 index 000000000000..fc6d0dc948e6 --- /dev/null +++ b/test/regression/logs/general/cases/file_to_blackhole_0ms_latency/datadog-agent/datadog.yaml @@ -0,0 +1,20 @@ +auth_token_file_path: /tmp/agent-auth-token + +# Disable cloud detection. This stops the Agent from poking around the +# execution environment & network. This is particularly important if the target +# has network access. +cloud_provider_metadata: [] + +dd_url: http://127.0.0.1:9091 + +logs_enabled: true +logs_config: + logs_dd_url: 127.0.0.1:9092 + file_scan_period: 1 + logs_no_ssl: true + force_use_http: true + +process_config.process_dd_url: http://localhost:9093 + +telemetry.enabled: true +telemetry.checks: '*' diff --git a/test/regression/logs/general/cases/file_to_blackhole_0ms_latency/experiment.yaml b/test/regression/logs/general/cases/file_to_blackhole_0ms_latency/experiment.yaml new file mode 100644 index 000000000000..6ca275d5d38d --- /dev/null +++ b/test/regression/logs/general/cases/file_to_blackhole_0ms_latency/experiment.yaml @@ -0,0 +1,39 @@ +optimization_goal: egress_throughput +erratic: false + +target: + name: datadog-agent + cpu_allotment: 4 + memory_allotment: 2GiB + + environment: + DD_API_KEY: a0000001 + DD_HOSTNAME: smp-regression + + profiling_environment: + DD_INTERNAL_PROFILING_BLOCK_PROFILE_RATE: 10000 + DD_INTERNAL_PROFILING_CPU_DURATION: 1m + DD_INTERNAL_PROFILING_DELTA_PROFILES: true + DD_INTERNAL_PROFILING_ENABLED: true + DD_INTERNAL_PROFILING_ENABLE_GOROUTINE_STACKTRACES: true + DD_INTERNAL_PROFILING_MUTEX_PROFILE_FRACTION: 10 + DD_INTERNAL_PROFILING_PERIOD: 1m + DD_INTERNAL_PROFILING_UNIX_SOCKET: /smp-host/apm.socket + DD_PROFILING_EXECUTION_TRACE_ENABLED: true + DD_PROFILING_EXECUTION_TRACE_PERIOD: 1m + DD_PROFILING_WAIT_PROFILE: true + DD_APM_INTERNAL_PROFILING_ENABLED: true + +checks: + - name: memory_usage + description: "Memory usage" + bounds: + series: total_pss_bytes + # The machine has 12GiB free. + upper_bound: 1.2GiB + + - name: missed_bytes + description: "Available bytes not polled by log Agent" + bounds: + series: missed_bytes + upper_bound: 0KiB diff --git a/test/regression/logs/general/cases/file_to_blackhole_0ms_latency/lading/lading.yaml b/test/regression/logs/general/cases/file_to_blackhole_0ms_latency/lading/lading.yaml new file mode 100644 index 000000000000..be4afe2e5608 --- /dev/null +++ b/test/regression/logs/general/cases/file_to_blackhole_0ms_latency/lading/lading.yaml @@ -0,0 +1,29 @@ +generator: + - file_gen: + logrotate_fs: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, + 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131] + load_profile: + constant: 10 MiB + concurrent_logs: 1 + maximum_bytes_per_log: 500 MiB + total_rotations: 5 + max_depth: 0 + variant: "apache_common" + maximum_prebuild_cache_size_bytes: 300 MiB + mount_point: /smp-shared + +blackhole: + - http: + binding_addr: "127.0.0.1:9091" + - http: + binding_addr: "127.0.0.1:9092" + response_delay_millis: 0 + - http: + binding_addr: "127.0.0.1:9093" + +target_metrics: + - prometheus: # core agent telemetry + uri: "http://127.0.0.1:5000/telemetry" + tags: + sub_agent: "core" diff --git a/test/regression/logs/general/cases/file_to_blackhole_1000ms_latency/datadog-agent/conf.d/disk-listener.d/conf.yaml b/test/regression/logs/general/cases/file_to_blackhole_1000ms_latency/datadog-agent/conf.d/disk-listener.d/conf.yaml new file mode 100644 index 000000000000..ec51a59de1c4 --- /dev/null +++ b/test/regression/logs/general/cases/file_to_blackhole_1000ms_latency/datadog-agent/conf.d/disk-listener.d/conf.yaml @@ -0,0 +1,5 @@ +logs: + - type: file + path: "/smp-shared/*.log" + service: "my-service" + source: "my-client-app" diff --git a/test/regression/logs/general/cases/file_to_blackhole_1000ms_latency/datadog-agent/datadog.yaml b/test/regression/logs/general/cases/file_to_blackhole_1000ms_latency/datadog-agent/datadog.yaml new file mode 100644 index 000000000000..fc6d0dc948e6 --- /dev/null +++ b/test/regression/logs/general/cases/file_to_blackhole_1000ms_latency/datadog-agent/datadog.yaml @@ -0,0 +1,20 @@ +auth_token_file_path: /tmp/agent-auth-token + +# Disable cloud detection. This stops the Agent from poking around the +# execution environment & network. This is particularly important if the target +# has network access. +cloud_provider_metadata: [] + +dd_url: http://127.0.0.1:9091 + +logs_enabled: true +logs_config: + logs_dd_url: 127.0.0.1:9092 + file_scan_period: 1 + logs_no_ssl: true + force_use_http: true + +process_config.process_dd_url: http://localhost:9093 + +telemetry.enabled: true +telemetry.checks: '*' diff --git a/test/regression/logs/general/cases/file_to_blackhole_1000ms_latency/experiment.yaml b/test/regression/logs/general/cases/file_to_blackhole_1000ms_latency/experiment.yaml new file mode 100644 index 000000000000..0edc07b3305d --- /dev/null +++ b/test/regression/logs/general/cases/file_to_blackhole_1000ms_latency/experiment.yaml @@ -0,0 +1,39 @@ +optimization_goal: egress_throughput +erratic: false + +target: + name: datadog-agent + cpu_allotment: 4 + memory_allotment: 2GiB + + environment: + DD_API_KEY: a0000001 + DD_HOSTNAME: smp-regression + + profiling_environment: + DD_INTERNAL_PROFILING_BLOCK_PROFILE_RATE: 10000 + DD_INTERNAL_PROFILING_CPU_DURATION: 1m + DD_INTERNAL_PROFILING_DELTA_PROFILES: true + DD_INTERNAL_PROFILING_ENABLED: true + DD_INTERNAL_PROFILING_ENABLE_GOROUTINE_STACKTRACES: true + DD_INTERNAL_PROFILING_MUTEX_PROFILE_FRACTION: 10 + DD_INTERNAL_PROFILING_PERIOD: 1m + DD_INTERNAL_PROFILING_UNIX_SOCKET: /smp-host/apm.socket + DD_PROFILING_EXECUTION_TRACE_ENABLED: true + DD_PROFILING_EXECUTION_TRACE_PERIOD: 1m + DD_PROFILING_WAIT_PROFILE: true + DD_APM_INTERNAL_PROFILING_ENABLED: true + +checks: + - name: memory_usage + description: "Memory usage" + bounds: + series: total_pss_bytes + # The machine has 12GiB free. + upper_bound: 1.2GiB + + - name: missed_bytes + description: "Allowable bytes not polled by log Agent" + bounds: + series: missed_bytes + upper_bound: 0KiB diff --git a/test/regression/logs/general/cases/file_to_blackhole_1000ms_latency/lading/lading.yaml b/test/regression/logs/general/cases/file_to_blackhole_1000ms_latency/lading/lading.yaml new file mode 100644 index 000000000000..f790e4f2b8e1 --- /dev/null +++ b/test/regression/logs/general/cases/file_to_blackhole_1000ms_latency/lading/lading.yaml @@ -0,0 +1,29 @@ +generator: + - file_gen: + logrotate_fs: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, + 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131] + load_profile: + constant: 3 MiB + concurrent_logs: 1 + maximum_bytes_per_log: 200 MiB + total_rotations: 5 + max_depth: 0 + variant: "apache_common" + maximum_prebuild_cache_size_bytes: 300 MiB + mount_point: /smp-shared + +blackhole: + - http: + binding_addr: "127.0.0.1:9091" + - http: + binding_addr: "127.0.0.1:9092" + response_delay_millis: 1000 + - http: + binding_addr: "127.0.0.1:9093" + +target_metrics: + - prometheus: # core agent telemetry + uri: "http://127.0.0.1:5000/telemetry" + tags: + sub_agent: "core" diff --git a/test/regression/logs/general/cases/file_to_blackhole_100ms_latency/datadog-agent/conf.d/disk-listener.d/conf.yaml b/test/regression/logs/general/cases/file_to_blackhole_100ms_latency/datadog-agent/conf.d/disk-listener.d/conf.yaml new file mode 100644 index 000000000000..ec51a59de1c4 --- /dev/null +++ b/test/regression/logs/general/cases/file_to_blackhole_100ms_latency/datadog-agent/conf.d/disk-listener.d/conf.yaml @@ -0,0 +1,5 @@ +logs: + - type: file + path: "/smp-shared/*.log" + service: "my-service" + source: "my-client-app" diff --git a/test/regression/logs/general/cases/file_to_blackhole_100ms_latency/datadog-agent/datadog.yaml b/test/regression/logs/general/cases/file_to_blackhole_100ms_latency/datadog-agent/datadog.yaml new file mode 100644 index 000000000000..fc6d0dc948e6 --- /dev/null +++ b/test/regression/logs/general/cases/file_to_blackhole_100ms_latency/datadog-agent/datadog.yaml @@ -0,0 +1,20 @@ +auth_token_file_path: /tmp/agent-auth-token + +# Disable cloud detection. This stops the Agent from poking around the +# execution environment & network. This is particularly important if the target +# has network access. +cloud_provider_metadata: [] + +dd_url: http://127.0.0.1:9091 + +logs_enabled: true +logs_config: + logs_dd_url: 127.0.0.1:9092 + file_scan_period: 1 + logs_no_ssl: true + force_use_http: true + +process_config.process_dd_url: http://localhost:9093 + +telemetry.enabled: true +telemetry.checks: '*' diff --git a/test/regression/logs/general/cases/file_to_blackhole_100ms_latency/experiment.yaml b/test/regression/logs/general/cases/file_to_blackhole_100ms_latency/experiment.yaml new file mode 100644 index 000000000000..0edc07b3305d --- /dev/null +++ b/test/regression/logs/general/cases/file_to_blackhole_100ms_latency/experiment.yaml @@ -0,0 +1,39 @@ +optimization_goal: egress_throughput +erratic: false + +target: + name: datadog-agent + cpu_allotment: 4 + memory_allotment: 2GiB + + environment: + DD_API_KEY: a0000001 + DD_HOSTNAME: smp-regression + + profiling_environment: + DD_INTERNAL_PROFILING_BLOCK_PROFILE_RATE: 10000 + DD_INTERNAL_PROFILING_CPU_DURATION: 1m + DD_INTERNAL_PROFILING_DELTA_PROFILES: true + DD_INTERNAL_PROFILING_ENABLED: true + DD_INTERNAL_PROFILING_ENABLE_GOROUTINE_STACKTRACES: true + DD_INTERNAL_PROFILING_MUTEX_PROFILE_FRACTION: 10 + DD_INTERNAL_PROFILING_PERIOD: 1m + DD_INTERNAL_PROFILING_UNIX_SOCKET: /smp-host/apm.socket + DD_PROFILING_EXECUTION_TRACE_ENABLED: true + DD_PROFILING_EXECUTION_TRACE_PERIOD: 1m + DD_PROFILING_WAIT_PROFILE: true + DD_APM_INTERNAL_PROFILING_ENABLED: true + +checks: + - name: memory_usage + description: "Memory usage" + bounds: + series: total_pss_bytes + # The machine has 12GiB free. + upper_bound: 1.2GiB + + - name: missed_bytes + description: "Allowable bytes not polled by log Agent" + bounds: + series: missed_bytes + upper_bound: 0KiB diff --git a/test/regression/logs/general/cases/file_to_blackhole_100ms_latency/lading/lading.yaml b/test/regression/logs/general/cases/file_to_blackhole_100ms_latency/lading/lading.yaml new file mode 100644 index 000000000000..110b6bf13c1b --- /dev/null +++ b/test/regression/logs/general/cases/file_to_blackhole_100ms_latency/lading/lading.yaml @@ -0,0 +1,29 @@ +generator: + - file_gen: + logrotate_fs: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, + 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131] + load_profile: + constant: 5 MiB + concurrent_logs: 1 + maximum_bytes_per_log: 500 MiB + total_rotations: 5 + max_depth: 0 + variant: "apache_common" + maximum_prebuild_cache_size_bytes: 300 MiB + mount_point: /smp-shared + +blackhole: + - http: + binding_addr: "127.0.0.1:9091" + - http: + binding_addr: "127.0.0.1:9092" + response_delay_millis: 100 + - http: + binding_addr: "127.0.0.1:9093" + +target_metrics: + - prometheus: # core agent telemetry + uri: "http://127.0.0.1:5000/telemetry" + tags: + sub_agent: "core" diff --git a/test/regression/logs/general/cases/file_to_blackhole_500ms_latency/datadog-agent/conf.d/disk-listener.d/conf.yaml b/test/regression/logs/general/cases/file_to_blackhole_500ms_latency/datadog-agent/conf.d/disk-listener.d/conf.yaml new file mode 100644 index 000000000000..ec51a59de1c4 --- /dev/null +++ b/test/regression/logs/general/cases/file_to_blackhole_500ms_latency/datadog-agent/conf.d/disk-listener.d/conf.yaml @@ -0,0 +1,5 @@ +logs: + - type: file + path: "/smp-shared/*.log" + service: "my-service" + source: "my-client-app" diff --git a/test/regression/logs/general/cases/file_to_blackhole_500ms_latency/datadog-agent/datadog.yaml b/test/regression/logs/general/cases/file_to_blackhole_500ms_latency/datadog-agent/datadog.yaml new file mode 100644 index 000000000000..fc6d0dc948e6 --- /dev/null +++ b/test/regression/logs/general/cases/file_to_blackhole_500ms_latency/datadog-agent/datadog.yaml @@ -0,0 +1,20 @@ +auth_token_file_path: /tmp/agent-auth-token + +# Disable cloud detection. This stops the Agent from poking around the +# execution environment & network. This is particularly important if the target +# has network access. +cloud_provider_metadata: [] + +dd_url: http://127.0.0.1:9091 + +logs_enabled: true +logs_config: + logs_dd_url: 127.0.0.1:9092 + file_scan_period: 1 + logs_no_ssl: true + force_use_http: true + +process_config.process_dd_url: http://localhost:9093 + +telemetry.enabled: true +telemetry.checks: '*' diff --git a/test/regression/logs/general/cases/file_to_blackhole_500ms_latency/experiment.yaml b/test/regression/logs/general/cases/file_to_blackhole_500ms_latency/experiment.yaml new file mode 100644 index 000000000000..0edc07b3305d --- /dev/null +++ b/test/regression/logs/general/cases/file_to_blackhole_500ms_latency/experiment.yaml @@ -0,0 +1,39 @@ +optimization_goal: egress_throughput +erratic: false + +target: + name: datadog-agent + cpu_allotment: 4 + memory_allotment: 2GiB + + environment: + DD_API_KEY: a0000001 + DD_HOSTNAME: smp-regression + + profiling_environment: + DD_INTERNAL_PROFILING_BLOCK_PROFILE_RATE: 10000 + DD_INTERNAL_PROFILING_CPU_DURATION: 1m + DD_INTERNAL_PROFILING_DELTA_PROFILES: true + DD_INTERNAL_PROFILING_ENABLED: true + DD_INTERNAL_PROFILING_ENABLE_GOROUTINE_STACKTRACES: true + DD_INTERNAL_PROFILING_MUTEX_PROFILE_FRACTION: 10 + DD_INTERNAL_PROFILING_PERIOD: 1m + DD_INTERNAL_PROFILING_UNIX_SOCKET: /smp-host/apm.socket + DD_PROFILING_EXECUTION_TRACE_ENABLED: true + DD_PROFILING_EXECUTION_TRACE_PERIOD: 1m + DD_PROFILING_WAIT_PROFILE: true + DD_APM_INTERNAL_PROFILING_ENABLED: true + +checks: + - name: memory_usage + description: "Memory usage" + bounds: + series: total_pss_bytes + # The machine has 12GiB free. + upper_bound: 1.2GiB + + - name: missed_bytes + description: "Allowable bytes not polled by log Agent" + bounds: + series: missed_bytes + upper_bound: 0KiB diff --git a/test/regression/logs/general/cases/file_to_blackhole_500ms_latency/lading/lading.yaml b/test/regression/logs/general/cases/file_to_blackhole_500ms_latency/lading/lading.yaml new file mode 100644 index 000000000000..f38c7d15793a --- /dev/null +++ b/test/regression/logs/general/cases/file_to_blackhole_500ms_latency/lading/lading.yaml @@ -0,0 +1,29 @@ +generator: + - file_gen: + logrotate_fs: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, + 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131] + load_profile: + constant: 3 MiB + concurrent_logs: 1 + maximum_bytes_per_log: 300 MiB + total_rotations: 5 + max_depth: 0 + variant: "apache_common" + maximum_prebuild_cache_size_bytes: 300 MiB + mount_point: /smp-shared + +blackhole: + - http: + binding_addr: "127.0.0.1:9091" + - http: + binding_addr: "127.0.0.1:9092" + response_delay_millis: 500 + - http: + binding_addr: "127.0.0.1:9093" + +target_metrics: + - prometheus: # core agent telemetry + uri: "http://127.0.0.1:5000/telemetry" + tags: + sub_agent: "core" diff --git a/test/regression/selection.yaml b/test/regression/selection.yaml index 9defa0301dca..d6de7b6e8df7 100644 --- a/test/regression/selection.yaml +++ b/test/regression/selection.yaml @@ -11,3 +11,6 @@ always: - quality_gates/** + +codeowners: + - logs/general/**