Skip to content

Ignore Datadog tracer transport noise by default - #10

Merged
FlyLikeAPenguin merged 1 commit into
mainfrom
ignore-datadog-tracer-noise
Aug 4, 2026
Merged

Ignore Datadog tracer transport noise by default#10
FlyLikeAPenguin merged 1 commit into
mainfrom
ignore-datadog-tracer-noise

Conversation

@FlyLikeAPenguin

Copy link
Copy Markdown
Owner

What changed?

"Datadog Tracer" is added to the shipped ignore_patterns, so the tracer's own transport errors no longer open investigations.

Why?

The tracer logs its own failures at ERROR level — lost traces, and stats-payload errors — when its POST to the local agent gets a 502 or times out during an agent restart or node churn. They are external, transient, and the verdict is knowable in advance, but each one still costs a full agent run to reach it.

Better normalization would not fix this. Within a single underlying outage the agent endpoint path varies (/v0.4/traces vs /v0.6/stats), and the tracer appends its own (occurred: ...) clause in a date format the leading-timestamp rule does not match. Both variations survive into the hash, so one outage fingerprints as several distinct errors and each is investigated separately. A message-pattern ignore is the only thing that collapses them.

Anyone running the Datadog source against a service that ships the tracer will hit this, so it belongs in the default config rather than in each operator's local file.

Validation

  • pytest — 52 passed
  • ruff check . — all checks passed
  • Documentation updated where behavior changed — the pattern is commented inline in config.yml
  • No secrets, production logs, or private source code included — the test fixtures are synthetic, using the loopback address and the existing payments sample service

Three tests cover it: the drop itself, the fingerprint divergence that motivates it, and a guard that the pattern does not suppress application errors merely mentioning the vendor.

Risk and operations

Suppression is the risk worth naming: this pattern is deliberately anchored to the tracer's own log prefix rather than the vendor name, so an application error like failed to publish metric to Datadog is still investigated. That boundary is pinned by a test.

Operators upgrading an existing deployment need no migration — ignore_patterns is read from their local config.yml, so they pick this up by adding the line themselves. Filtering happens before fingerprinting, so previously recorded errors are unaffected.

The tracer logs its own transport failures at ERROR level: lost traces and
stats-payload errors when the POST to the local agent gets a 502 or times out
during an agent restart or node churn. These are external and transient, and
the verdict is knowable in advance, but they still open investigations.

Normalization cannot collapse them. The agent endpoint path varies between
occurrences of a single outage, and the tracer appends its own
"(occurred: ...)" clause in a date format the leading-timestamp rule does not
match, so each occurrence hashes to a distinct fingerprint and is investigated
on its own.

Add "Datadog Tracer" to the shipped ignore_patterns, with tests covering the
drop, the fingerprint divergence that motivates it, and the fact that the
pattern does not suppress application errors that merely mention the vendor.
@FlyLikeAPenguin
FlyLikeAPenguin merged commit 556f685 into main Aug 4, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant