From def8b7f251ec60acc4ec673f5c6acc4065e99e18 Mon Sep 17 00:00:00 2001 From: Stephen Wakely Date: Tue, 2 Jul 2024 23:01:54 +0100 Subject: [PATCH] enhancement(datadog_agent source): enable zstd decompression (#20732) * Handle zstd Signed-off-by: Stephen Wakely * Update integration tests to send zstd. Signed-off-by: Stephen Wakely * Changelog Signed-off-by: Stephen Wakely * Feedback from Jesse Signed-off-by: Stephen Wakely --------- Signed-off-by: Stephen Wakely --- changelog.d/20732_datadog_agent_zstd.enhancement.md | 1 + scripts/integration/datadog-agent/compose.yaml | 1 + src/sources/datadog_agent/mod.rs | 6 ++++++ 3 files changed, 8 insertions(+) create mode 100644 changelog.d/20732_datadog_agent_zstd.enhancement.md diff --git a/changelog.d/20732_datadog_agent_zstd.enhancement.md b/changelog.d/20732_datadog_agent_zstd.enhancement.md new file mode 100644 index 0000000000000..99c55d1fc060c --- /dev/null +++ b/changelog.d/20732_datadog_agent_zstd.enhancement.md @@ -0,0 +1 @@ +Allow the `datadog_agent` source to accept payloads that have been compressed with `zstd`. diff --git a/scripts/integration/datadog-agent/compose.yaml b/scripts/integration/datadog-agent/compose.yaml index 5a36d822ac6ca..1b0b0a5a0fff6 100644 --- a/scripts/integration/datadog-agent/compose.yaml +++ b/scripts/integration/datadog-agent/compose.yaml @@ -14,6 +14,7 @@ services: - DD_CMD_PORT=5001 - DD_USE_DOGSTATSD=false - DD_HOSTNAME=datadog-agent + - DD_SERIALIZER_COMPRESSOR_KIND=zstd volumes: - ../../../tests/data/datadog-agent/conf.yaml:/etc/datadog-agent/conf.d/test.d/conf.yaml datadog-trace-agent: diff --git a/src/sources/datadog_agent/mod.rs b/src/sources/datadog_agent/mod.rs index 7d1ed61d82dc2..f2d4197620fa6 100644 --- a/src/sources/datadog_agent/mod.rs +++ b/src/sources/datadog_agent/mod.rs @@ -461,6 +461,12 @@ impl DatadogAgentSource { .map_err(|error| handle_decode_error(encoding, error))?; decoded.into() } + "zstd" => { + let mut decoded = Vec::new(); + zstd::stream::copy_decode(body.reader(), &mut decoded) + .map_err(|error| handle_decode_error(encoding, error))?; + decoded.into() + } "deflate" | "x-deflate" => { let mut decoded = Vec::new(); ZlibDecoder::new(body.reader())