Skip to content

[debugger] Test that debugger metrics use the debugger telemetry namespace - #8052

Draft
watson wants to merge 6 commits into
mainfrom
watson/DEBUG-6335/debugger-telemetry-namespace
Draft

watson wants to merge 6 commits into
mainfrom
watson/DEBUG-6335/debugger-telemetry-namespace

Conversation

@watson

@watson watson commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Summary

The debugger team agreed that every tracer reports its debugger metrics in a shared debugger instrumentation telemetry namespace, instead of live_debugger or dynamic_instrumentation (DEBUG-6335). This adds a cross-tracer test for it in the DEBUGGER_TELEMETRY scenario.

Test_Debugger_Telemetry_Metrics::test_events_skipped_rate_limit_probe
  setup
    install a snapshot line probe (probe_snapshot_log_line, /debugger/log)
    hit it 50 times in a row          # 1 snapshot/s, but Java/.NET can burst up to 17
    wait up to 60s for the telemetry flush
  test
    no metric series in live_debugger / dynamic_instrumentation
    events.skipped tagged reason:rateLimitProbe in debugger
      type == count, sum(points) > 0

The test only relies on reason:rateLimitProbe, the one guardrail every tracer already emits. Java doesn't send event_type.

Manifests enable it where the change has shipped or reached dev builds, using the weblogs where the line-probe snapshot tests run:

Tracer Change Manifest
Ruby DataDog/dd-trace-rb#6484, released in 2.46.0 enabled from v2.46.0 (rails72, rails80, uds-rails)
Java DataDog/dd-trace-java#12892, merged enabled from v1.68.0-SNAPSHOT (Spring Boot weblogs)
Node.js DataDog/dd-trace-js#10757, on the v6.22.0 / v5.133.0 release proposals enabled from >=6.22.0 || ^5.133.0 (all weblogs but nextjs)
.NET DataDog/dd-trace-dotnet#9423, merged, ships in 3.57.0 enabled from v3.57.0-dev (all weblogs)
Python DataDog/dd-trace-py#21041 (draft), and its guardrail metric names don't match events.skipped yet missing_feature
Go, PHP no debugger telemetry metrics yet missing_feature

The intake allows the namespace in ddoghq/dd-go#23524.

Evidence

  • The test's parsing helpers were checked offline against synthetic generate-metrics and sketches payloads, covering payload-level and per-series namespaces.
  • ./format.sh passes.
  • I couldn't run the scenario end to end locally: the Node.js weblog base image is amd64-only and the weblog didn't start under emulation on my arm64 host.

Merge Danger

Door: two-way

Blast Radius: small

The new test runs for Ruby, Java, Node.js and .NET. It has never run end to end before (see Evidence), so their CI jobs are its first real run.

🤖 Generated with Claude Code

…space

The debugger team agreed that every tracer reports its debugger metrics in a
shared `debugger` instrumentation telemetry namespace, instead of
`live_debugger` or `dynamic_instrumentation`.

Add Test_Debugger_Telemetry_Metrics: it hits a snapshot line probe in a
quick burst so the per-probe rate limit skips events, then asserts that
`events.skipped` tagged `reason:rateLimitProbe` is reported in the
`debugger` namespace and that no debugger metric is sent in a legacy
namespace. The test is disabled for every tracer until each one ships the
namespace change.

Environment: Datadog workspace

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

CODEOWNERS have been resolved as:

manifests/dotnet.yml                                                    @DataDog/system-tests-reviewers
manifests/golang.yml                                                    @DataDog/system-tests-reviewers
manifests/java.yml                                                      @DataDog/system-tests-reviewers
manifests/nodejs.yml                                                    @DataDog/system-tests-reviewers
manifests/php.yml                                                       @DataDog/system-tests-reviewers
manifests/python.yml                                                    @DataDog/system-tests-reviewers
manifests/ruby.yml                                                      @DataDog/system-tests-reviewers
tests/debugger/test_debugger_telemetry.py                               @DataDog/debugger

watson and others added 3 commits October 20, 2026 09:13
Resolve the conflict in manifests/python.yml: keep main's new `aiohttp`
weblog declarations for the debugger telemetry tests, and keep the
`Test_Debugger_Telemetry_Metrics` entry after them.

Environment: Datadog workspace

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ruby 2.46.0 reports its debugger metrics in the `debugger` namespace
(DataDog/dd-trace-rb#6484), and Java's change (DataDog/dd-trace-java#12892)
is merged, so enable the test for Ruby from 2.46.0 and for Java from the
1.68.0 snapshots. Both use the weblogs where the line-probe snapshot tests
run, since this test installs a line snapshot probe.

Environment: Datadog workspace

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
DataDog/dd-trace-js#10757 is on the v6.22.0 and v5.133.0 release proposals,
so enable the test from those versions on every weblog where the
line-probe snapshot tests run (all but nextjs). Add a ref_6_22_0 anchor
for the version range.

Environment: Datadog workspace

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@datadog-official

datadog-official Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Tests

🎉 All green!

🧪 All tests passed
❄️ No new flaky tests detected

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 9b08d08 | Docs | View more details | Give us feedback!

watson and others added 2 commits October 20, 2026 11:32
DataDog/dd-trace-dotnet#9423 is merged and ships in 3.57.0 (3.56.0 was
released the day before), so enable the test from the 3.57.0 dev builds,
on every weblog like the .NET line-probe snapshot tests.

Environment: Datadog workspace

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The first CI run showed Java emitting a snapshot for all 10 hits, so it
skipped nothing and reported no events.skipped metric. Java and .NET rate
limit snapshot probes with an adaptive sampler that starts with an unused
budget of 16 extra snapshots on top of the 1 per second, so a burst of 10
never reaches the limit. A burst of 50 does, with margin for the budget
that refills during the burst.

Environment: Datadog workspace

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
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