Every source behind this page, graded. Filter by kind. The mix is
deliberately heavy on code and light on prose, for the reason given at the end.
Postmortem
Datadog2023-05
2023-03-08 incident: root cause
The only full public root cause Datadog has published. An automatically applied systemd
security update caused systemd-networkd to delete the CNI-managed routes on tens of
thousands of nodes across five regions and three cloud providers.
Carry forwardMulti-cloud is not a partition against a package update that lands everywhere at once.
datadoghq.com/blog/2023-03-08-multiregion-infrastructure-connectivity-issue
Postmortem
Datadog2023-06
A deep dive into our incident response
The human side of the same outage: more than 50 engineers in the first hour, almost 100
workstreams, 500 to 750 people in shifts, and a company-wide response for nearly 48
hours after a failure that took under an hour to arrive.
Carry forwardRecovery cost scales with the number of independent stacks you must repair, not with the duration of the trigger.
datadoghq.com/blog/engineering/2023-03-08-deep-dive-into-incident-response
Postmortem
Datadog2026-01
Hardening eBPF for runtime security
An incident review inside an engineering post: Datadog's traffic-control filters raced
with Cilium's and broke pod connectivity. Also states the guardrails, the 4.15 kernel
floor and the in-kernel drop rate.
Carry forwardStartup self-tests whose results leave the machine are the only way to learn that your kernel code broke a host you cannot see.
datadoghq.com/blog/engineering/ebpf-workload-protection-lessons
Source
Datadog2026-09
datadog-agent.service.tmpl
The whole reversibility design in twenty lines. Only the experiment branch of the
template sets EXPERIMENT_TIMEOUT=3000s, wraps the binary in
timeout, declares OnFailure=datadog-agent.service and forces a
failed state with ExecStopPost=/bin/false.
Carry forwardMake the new version the one that expires, and inaction becomes a safe rollback.
raw.githubusercontent.com/DataDog/datadog-agent/main/pkg/fleet/installer/packages/embedded/tmpl/datadog-agent.service.tmpl
Design doc
Datadog2026-08
Agent Data Plane preflight mode
A design note written for maintainers, not readers: why the pre-flight exists, the five
conditions that gate it, why the 90 second floor is a contract, and why it is skipped
when a secret backend is configured.
Carry forwardIf you cannot test on representative hosts, test on the actual host and report the result before you change anything.
raw.githubusercontent.com/DataDog/datadog-agent/main/docs/dev/agent-data-plane.md
Design doc
Datadog2026-09
Installer package hooks
Documents the ordinary deb and rpm lifecycles, then the OCI-only "experiments" path:
start writes the new version while keeping the old files, stop deletes the new, promote
deletes the old. The hook names are the state machine.
Carry forwardTwo slots on disk with an explicit promote step turn an upgrade into a decision you can defer.
raw.githubusercontent.com/DataDog/datadog-agent/main/pkg/fleet/installer/packages/README.md
Source
Datadog2021-12
Uptane client for remote configuration
Remote configuration verifies TUF metadata using Uptane, the framework built for
shipping software to vehicles, with separate director and config roots and per-org
stores.
Carry forwardA channel that can change execution on other people's machines needs signed instructions, not just an authenticated connection.
raw.githubusercontent.com/DataDog/datadog-agent/main/pkg/config/remote/uptane/client.go
Source
Datadog2026-09
Installer default package list
The remote catalogue: the Agent, the OTel distribution and tracing libraries for eight
languages, each gated on release state, site and whether the host opted into remote
updates. Also carries pinned versions for CentOS 6 with the note that nothing is tested
there.
Carry forwardStaged exposure is a data structure, not a process: encode who may receive a version in the code that resolves it.
raw.githubusercontent.com/DataDog/datadog-agent/main/pkg/fleet/installer/default_packages.go
Source
Datadog2026-09
quality_gate_idle experiment
A CI experiment that runs the Agent with default configuration and no workload and
fails the build above 179 MiB of total PSS, five intake connections, or 0.8 MiB of
received traffic.
Carry forwardExpress the footprint you promise a customer as a build failure, not as a performance goal.
raw.githubusercontent.com/DataDog/datadog-agent/main/test/regression/cases/quality_gate_idle/experiment.yaml
Source
Datadog2026-09
rtloader README
The compatibility shim that made the Go rewrite survivable: a C89 interface over
CPython that picks its Python backend at runtime with dlopen. The line
"Python2 isn't supported anymore" is the end of a migration that began in 2019.
Carry forwardRewrites are affordable when the plugin ABI survives them; price the shim against the ecosystem you would otherwise strand.
raw.githubusercontent.com/DataDog/datadog-agent/main/rtloader/README.md
Source
Datadog2024-10
Commit: rtloader, drop python2 support
One commit, 15 October 2024, removes the Python 2 backend. Python 2 reached upstream end
of life in January 2020 and Agent 7 shipped in December 2019, which puts the length of
the compatibility tail at nearly five years.
Carry forwardDate your deletions: the gap between "we shipped the replacement" and "we deleted the old path" is the real migration cost.
github.com/DataDog/datadog-agent/commit/4b8b2b5ab9
Source
Datadog2026-03
dd-agent: legacy OS scripts for CA rotation
A March 2026 commit on the Agent 5 repository adding bash 3.1 compatible scripts for
RHEL 5 and 6 and PowerShell 2.0 compatible scripts for Windows Server 2008 R2, including
an insecure download fallback for hosts whose CA bundle cannot verify GitHub.
Carry forwardThe oldest host in your install base sets the floor for every tool you will ever need to run on it.
github.com/DataDog/dd-agent/commit/2330e07b
Source
Datadog2026-07
dd-agent README, still supported
The Agent 5 repository states the line is "still supported" and documents a development
setup requiring Python 2.7. Its last touch is July 2026, eight years after the
successor shipped.
Carry forward"Supported" is a promise about your future engineering time; count the versions you have made it for.
raw.githubusercontent.com/DataDog/dd-agent/master/README.md
Source
Datadog2023-01
dd-agent CHANGELOG, release 5.32.9
A release of a frozen product whose entire content is a re-signed RPM and two dependency
bumps. The reason a dead line still cuts releases is almost always a key, a certificate
or a repository signature.
Carry forwardKeep a build pipeline alive for every version you still accept data from, because you will need to re-sign it.
raw.githubusercontent.com/DataDog/dd-agent/master/CHANGELOG.md
Source
Datadog2024-11
PR #29560: FIPS support, closed unmerged
Closed after review: FIPS self-tests in the entrypoint would fail on read-only
filesystems and without root, and would be skipped when the entrypoint is overridden.
The regression detector separately flagged a 6.22 percent memory increase.
Carry forwardReview a change to fleet-resident software against the least privileged, most locked-down host in the population.
github.com/DataDog/datadog-agent/pull/29560
Source
Datadog2025-11
Issue #43052: the installer needs the channel you turned off
On Agent 7.72.2 with remote configuration disabled, the installer service fails with
"remote config is required to create the updater" and exit code 255, restarting in a
loop. Open as of September 2026.
Carry forwardTest the configuration where the customer declines your control channel; it is the one that never appears in a demo.
github.com/DataDog/datadog-agent/issues/43052
Source
Datadog2026-06
PR #50607: error logs to internal telemetry
Adds experimental forwarding of Agent ERROR logs so Datadog engineers can see failure
patterns across the fleet. Off by default, with the message text dropped before send and
the commit SHA included so a stack location can be resolved without the text.
Carry forwardYou can observe a fleet you do not own by shipping identifiers rather than content.
github.com/DataDog/datadog-agent/pull/50607
Source
Datadog2026-09
PowerShell check allowlist
The example file states the rule: the allowlist must live in a directory writable only
by Administrators and SYSTEM, must be owned by them, and the check "refuses to load it
and collects nothing (fail closed)" otherwise.
Carry forwardWhen your software executes host commands, make the host's administrator the author of the policy and fail closed without one.
raw.githubusercontent.com/DataDog/datadog-agent/main/cmd/agent/dist/protected/powershell_allowlist.yaml.example
Design doc
Datadog2026-09
OpenTelemetry converter component
"The converter enhances the user provided configuration": Datadog's collector
distribution rewrites the customer's OTel config to insert its own processors and
extensions, with each feature individually disablable and a documented way to turn them
all off.
Carry forwardIf you modify a configuration the customer owns, enumerate every modification as a named feature with an off switch.
raw.githubusercontent.com/DataDog/datadog-agent/main/comp/otelcol/converter/README.md
Source
systemd2022-11
systemd #25451, closed as not-a-bug
Routes added outside networkd disappear on restart despite
ManageForeignRoutes=no. Filed November 2022, labelled "not-a-bug", four
months before the same mechanism removed Cilium's routes across Datadog's fleet.
Carry forwardSearch your dependencies' trackers for the mechanism, not the symptom; a closed issue there is an unowned risk in your design.
github.com/systemd/systemd/issues/25451
Source
systemd2025-03
systemd #36756, the fix
Merged March 2025: routes on an interface could be removed on restart even with
KeepConfiguration=yes, traced to an earlier change, with tests added.
Carry forwardUpstream fixes to shared-state bugs arrive years after the incidents; your architecture has to survive the interval.
github.com/systemd/systemd/pull/36756
Source
Bottlerocket2023-09
Bottlerocket #3436
On a Kubernetes-focused OS, restarting systemd-networkd removes the IP rules installed
by the VPC CNI, leaving only the defaults. Same class, different organisation, six
months after Datadog's outage.
Carry forwardTwo independent reports of the same interaction make it a design constraint rather than an anomaly.
github.com/bottlerocket-os/bottlerocket/issues/3436
Source
k3s2023-06
k3s #7736
An install script that saves and restores iptables rules breaks Cilium on systemd 249
and later. The workaround is to skip the script's start step entirely.
Carry forwardInstallers that touch global host state need an explicit "do not manage this" flag, or every CNI becomes your problem.
github.com/k3s-io/k3s/issues/7736
Eng blog
Datadog2026-02
Reducing Agent Go binary sizes by up to 77%
Concrete numbers for every binary and the package as a whole, and an unusually direct
statement of why size matters when the artefact lands on other people's machines:
network costs, resource usage, and constrained platforms.
Carry forwardDistribution size is a customer-facing cost, and it grows silently until someone measures it per platform.
datadoghq.com/blog/engineering/agent-go-binaries
Eng blog
Datadog2022-05
Introducing Husky
The backend counterpart: a third-generation event store on commodity object storage,
built because one tenant's burst degraded queries for everyone sharing a shard. The
migration took over eighteen months.
Carry forwardThe vendor's own multi-tenancy problem and the customer's noisy-neighbour problem are the same problem at two scales.
datadoghq.com/blog/engineering/introducing-husky
Eng blog
Datadog2025-10
Inside Husky's query engine
Scale and cache behaviour for the system the Agent feeds: more than 100 trillion events
and billions of queries a day, with 80 percent result-cache and 70 percent range-cache
hit ratios.
Carry forwardSizing the ingest side tells you what a one percent change in agent-side sampling is worth.
datadoghq.com/blog/engineering/husky-query-architecture
Vendor
Datadog2026-09
Agent version differences
States the upgrade expectation ("every minor and patch release, or, at a minimum,
monthly") and confirms Agent 6 as "a complete rewrite of the core Agent in Golang". The
gap between that expectation and the Agent 5 runbooks is the subject of this guide.
Carry forwardWrite down the upgrade cadence you expect, then measure the distribution you actually have.
docs.datadoghq.com/agent/guide/version_differences
Vendor
Datadog2026-09
Fleet Automation documentation
The customer-facing framing of the installer daemon: govern and remotely manage Agents
and OTel Collectors, identify outdated versions and upgrade them, with the capability
unavailable on some government sites.
Carry forwardThe remote update capability is a product surface with its own regional and regulatory exclusions; plan for the hosts it will never reach.
docs.datadoghq.com/agent/fleet_automation
Two absences shape this wall. There are no papers and no conference
talks in it, because this session could not reach arxiv, USENIX or video hosts; nothing in
the guide rests on one, and any claim that would have needed one has been left out. And
there is exactly one incident for which Datadog has published a root cause, in a decade of
operating a global observability platform. For a company that sells incident management,
that is a striking ratio, and it means every statement here about how Datadog's own fleet
fails is either from that one incident or reconstructed from code.