From 11d60797ba593259ec709017b5ee4c99c0dfe732 Mon Sep 17 00:00:00 2001 From: Jules Macret Date: Mon, 20 Apr 2026 14:34:34 +0200 Subject: [PATCH 1/3] Forward DATADOG_TRACE_ID/PARENT_ID through sudo apt-get install The yum install path already forwards DATADOG_TRACE_ID and DATADOG_PARENT_ID through the sudo bash -c wrapper so the agent's post-install hooks (which invoke datadog-installer) can pick them up via env and join the install-script trace. The apt path was missing these two variables, so on Debian/Ubuntu the datadog-installer spans were emitted under a fresh, detached trace rather than under the install-script root span. sudo strips environment variables by default (env_reset), which is why the wrapper explicitly re-injects DD_API_KEY, DD_SITE, etc. This commit adds the two DATADOG_* trace-propagation variables to the same list so apt-based installs get the same end-to-end trace view as yum. Co-Authored-By: Claude Opus 4.7 (1M context) --- CHANGELOG.rst | 2 ++ install_script.sh.template | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 700d7b85..f3eb02fd 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -5,6 +5,8 @@ Release Notes Unreleased ================ +- Forward ``DATADOG_TRACE_ID`` and ``DATADOG_PARENT_ID`` through the ``sudo apt-get install`` invocation so the agent's ``postinst`` hook (which runs ``datadog-installer``) inherits the install-script trace context. Previously only the yum path forwarded these variables, causing apt-based ``datadog-installer`` spans to appear as a separate trace detached from the install-script root span. + 1.45.0 ================ diff --git a/install_script.sh.template b/install_script.sh.template index 8a114520..419269f6 100644 --- a/install_script.sh.template +++ b/install_script.sh.template @@ -1689,7 +1689,7 @@ END )" start_stage "install_agent_packages" - $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' DD_INSTALLER_REGISTRY_URL='${DD_INSTALLER_REGISTRY_URL}' POLICYRCD='${POLICYRCD}' apt-get install -o Acquire::Retries='5' -y --force-yes ${packages[*]} 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2)" + $sudo_cmd bash -c "DD_OTELCOLLECTOR_ENABLED='${DD_OTELCOLLECTOR_ENABLED}' DD_API_KEY='${apikey}' DD_SITE='${site}' DD_INSTALLER_REGISTRY_URL='${DD_INSTALLER_REGISTRY_URL}' POLICYRCD='${POLICYRCD}' DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} apt-get install -o Acquire::Retries='5' -y --force-yes ${packages[*]} 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2)" if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_installed_by_agent" ]; then $sudo_cmd mv /etc/apt/sources.list.d/datadog-ddot.list.disabled /etc/apt/sources.list.d/datadog-ddot.list $sudo_cmd bash -c "POLICYRCD='${POLICYRCD}' apt-get install -o Acquire::Retries='5' -y --force-yes ${ddot_package} 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2)" From 3db4ad3d812fc5010aa3493ee45fc63434b1d5be Mon Sep 17 00:00:00 2001 From: Arthur Bellal Date: Tue, 21 Apr 2026 13:24:48 +0200 Subject: [PATCH 2/3] Remove CHANGELOG entry --- CHANGELOG.rst | 2 -- 1 file changed, 2 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index f3eb02fd..700d7b85 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -5,8 +5,6 @@ Release Notes Unreleased ================ -- Forward ``DATADOG_TRACE_ID`` and ``DATADOG_PARENT_ID`` through the ``sudo apt-get install`` invocation so the agent's ``postinst`` hook (which runs ``datadog-installer``) inherits the install-script trace context. Previously only the yum path forwarded these variables, causing apt-based ``datadog-installer`` spans to appear as a separate trace detached from the install-script root span. - 1.45.0 ================ From 52f2d8a6ee040434d8021e455885658b55552bd8 Mon Sep 17 00:00:00 2001 From: Arthur Bellal Date: Tue, 21 Apr 2026 13:47:09 +0200 Subject: [PATCH 3/3] Forward DATADOG_TRACE_ID/PARENT_ID through zypper install --- install_script.sh.template | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/install_script.sh.template b/install_script.sh.template index 419269f6..1078d0ab 100644 --- a/install_script.sh.template +++ b/install_script.sh.template @@ -1877,17 +1877,17 @@ END fi # Not yet retry mechanism in zypper, see https://github.com/openSUSE/zypper/issues/420 if [ -z "$sudo_cmd" ]; then - DD_OTELCOLLECTOR_ENABLED="${DD_OTELCOLLECTOR_ENABLED}" DD_API_KEY="${apikey}" DD_SITE="${site}" DD_INSTALLER_REGISTRY_URL="${DD_INSTALLER_REGISTRY_URL}" ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} zypper --non-interactive --no-refresh install "${packages[@]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: + DD_OTELCOLLECTOR_ENABLED="${DD_OTELCOLLECTOR_ENABLED}" DD_API_KEY="${apikey}" DD_SITE="${site}" DD_INSTALLER_REGISTRY_URL="${DD_INSTALLER_REGISTRY_URL}" ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} zypper --non-interactive --no-refresh install "${packages[@]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: else - $sudo_cmd DD_OTELCOLLECTOR_ENABLED="${DD_OTELCOLLECTOR_ENABLED}" DD_API_KEY="${apikey}" DD_SITE="${site}" DD_INSTALLER_REGISTRY_URL="${DD_INSTALLER_REGISTRY_URL}" ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE="${SYSTEMD_OFFLINE:-0}" zypper --non-interactive --no-refresh install "${packages[@]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: + $sudo_cmd DD_OTELCOLLECTOR_ENABLED="${DD_OTELCOLLECTOR_ENABLED}" DD_API_KEY="${apikey}" DD_SITE="${site}" DD_INSTALLER_REGISTRY_URL="${DD_INSTALLER_REGISTRY_URL}" ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE="${SYSTEMD_OFFLINE:-0}" DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} zypper --non-interactive --no-refresh install "${packages[@]}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: fi if [ -n "$DD_OTELCOLLECTOR_ENABLED" ] && [ -z "$ddot_installed_by_agent" ]; then if [ -z "$sudo_cmd" ]; then - ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} zypper --non-interactive --no-refresh install "${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: + ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE=${SYSTEMD_OFFLINE:-0} DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} zypper --non-interactive --no-refresh install "${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: else $sudo_cmd zypper modifyrepo --enable datadog-ddot - $sudo_cmd ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE="${SYSTEMD_OFFLINE:-0}" zypper --non-interactive --no-refresh install "${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: + $sudo_cmd ZYPP_RPM_DEBUG="${ZYPP_RPM_DEBUG:-0}" SYSTEMD_OFFLINE="${SYSTEMD_OFFLINE:-0}" DATADOG_TRACE_ID=${DATADOG_TRACE_ID} DATADOG_PARENT_ID=${DATADOG_PARENT_ID} zypper --non-interactive --no-refresh install "${ddot_package}" 2> >($sudo_cmd tee /tmp/ddog_install_error_msg >&2) ||: $sudo_cmd zypper modifyrepo --disable datadog-ddot fi fi