Send probe statuses to new debugger track#6276
Conversation
BenchmarksStartupParameters
See matching parameters
SummaryFound 0 performance improvements and 2 performance regressions! Performance is the same for 46 metrics, 6 unstable metrics.
Startup time reports for petclinicgantt
title petclinic - global startup overhead: candidate=1.26.0-SNAPSHOT~aa39e0829b, baseline=1.26.0-SNAPSHOT~1878db6329
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.566 s) : 0, 1566011
Total [baseline] (12.922 s) : 0, 12921758
Agent [candidate] (1.579 s) : 0, 1578921
Total [candidate] (13.055 s) : 0, 13054846
section appsec
Agent [baseline] (1.7 s) : 0, 1699989
Total [baseline] (12.961 s) : 0, 12961215
Agent [candidate] (1.703 s) : 0, 1702520
Total [candidate] (13.035 s) : 0, 13034601
section iast
Agent [baseline] (1.717 s) : 0, 1716950
Total [baseline] (13.275 s) : 0, 13275228
Agent [candidate] (1.72 s) : 0, 1720278
Total [candidate] (13.32 s) : 0, 13319514
section profiling
Agent [baseline] (1.866 s) : 0, 1865796
Total [baseline] (13.311 s) : 0, 13311227
Agent [candidate] (1.889 s) : 0, 1888767
Total [candidate] (13.271 s) : 0, 13271054
gantt
title petclinic - break down per module: candidate=1.26.0-SNAPSHOT~aa39e0829b, baseline=1.26.0-SNAPSHOT~1878db6329
dateFormat X
axisFormat %s
section tracing
BytebuddyAgent [baseline] (967.955 ms) : 0, 967955
BytebuddyAgent [candidate] (976.598 ms) : 0, 976598
GlobalTracer [baseline] (458.622 ms) : 0, 458622
GlobalTracer [candidate] (462.11 ms) : 0, 462110
AppSec [baseline] (69.069 ms) : 0, 69069
AppSec [candidate] (69.101 ms) : 0, 69101
Remote Config [baseline] (853.3 µs) : 0, 853
Remote Config [candidate] (856.077 µs) : 0, 856
Telemetry [baseline] (9.445 ms) : 0, 9445
Telemetry [candidate] (9.475 ms) : 0, 9475
section appsec
BytebuddyAgent [baseline] (969.9 ms) : 0, 969900
BytebuddyAgent [candidate] (969.836 ms) : 0, 969836
GlobalTracer [baseline] (456.651 ms) : 0, 456651
GlobalTracer [candidate] (458.154 ms) : 0, 458154
AppSec [baseline] (203.496 ms) : 0, 203496
AppSec [candidate] (204.354 ms) : 0, 204354
Remote Config [baseline] (800.216 µs) : 0, 800
Remote Config [candidate] (795.356 µs) : 0, 795
Telemetry [baseline] (9.211 ms) : 0, 9211
Telemetry [candidate] (9.151 ms) : 0, 9151
section iast
BytebuddyAgent [baseline] (1.137 s) : 0, 1136746
BytebuddyAgent [candidate] (1.139 s) : 0, 1138958
GlobalTracer [baseline] (421.061 ms) : 0, 421061
GlobalTracer [candidate] (420.652 ms) : 0, 420652
AppSec [baseline] (66.84 ms) : 0, 66840
AppSec [candidate] (65.792 ms) : 0, 65792
IAST [baseline] (20.64 ms) : 0, 20640
IAST [candidate] (22.063 ms) : 0, 22063
Remote Config [baseline] (765.461 µs) : 0, 765
Remote Config [candidate] (757.422 µs) : 0, 757
Telemetry [baseline] (10.855 ms) : 0, 10855
Telemetry [candidate] (11.536 ms) : 0, 11536
section profiling
BytebuddyAgent [baseline] (988.857 ms) : 0, 988857
BytebuddyAgent [candidate] (995.469 ms) : 0, 995469
GlobalTracer [baseline] (571.61 ms) : 0, 571610
GlobalTracer [candidate] (570.941 ms) : 0, 570941
AppSec [baseline] (69.514 ms) : 0, 69514
AppSec [candidate] (69.677 ms) : 0, 69677
Remote Config [baseline] (849.358 µs) : 0, 849
Remote Config [candidate] (853.499 µs) : 0, 853
Telemetry [baseline] (9.767 ms) : 0, 9767
Telemetry [candidate] (9.818 ms) : 0, 9818
ProfilingAgent [baseline] (135.43 ms) : 0, 135430
ProfilingAgent [candidate] (151.629 ms) : 0, 151629
Profiling [baseline] (135.488 ms) : 0, 135488
Profiling [candidate] (151.684 ms) : 0, 151684
Startup time reports for insecure-bankgantt
title insecure-bank - global startup overhead: candidate=1.26.0-SNAPSHOT~aa39e0829b, baseline=1.26.0-SNAPSHOT~1878db6329
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.568 s) : 0, 1567880
Total [baseline] (12.248 s) : 0, 12247685
Agent [candidate] (1.576 s) : 0, 1575807
Total [candidate] (12.26 s) : 0, 12259664
section iast
Agent [baseline] (1.725 s) : 0, 1725337
Total [baseline] (12.99 s) : 0, 12989836
Agent [candidate] (1.721 s) : 0, 1720749
Total [candidate] (12.934 s) : 0, 12934314
section iast_TELEMETRY_OFF
Agent [baseline] (1.706 s) : 0, 1706497
Total [baseline] (12.893 s) : 0, 12892725
Agent [candidate] (1.708 s) : 0, 1707998
Total [candidate] (12.912 s) : 0, 12912191
gantt
title insecure-bank - break down per module: candidate=1.26.0-SNAPSHOT~aa39e0829b, baseline=1.26.0-SNAPSHOT~1878db6329
dateFormat X
axisFormat %s
section tracing
BytebuddyAgent [baseline] (969.645 ms) : 0, 969645
BytebuddyAgent [candidate] (974.925 ms) : 0, 974925
GlobalTracer [baseline] (458.39 ms) : 0, 458390
GlobalTracer [candidate] (460.771 ms) : 0, 460771
AppSec [baseline] (69.263 ms) : 0, 69263
AppSec [candidate] (69.269 ms) : 0, 69269
Remote Config [baseline] (852.81 µs) : 0, 853
Remote Config [candidate] (858.428 µs) : 0, 858
Telemetry [baseline] (9.396 ms) : 0, 9396
Telemetry [candidate] (9.402 ms) : 0, 9402
section iast
BytebuddyAgent [baseline] (1.141 s) : 0, 1141490
BytebuddyAgent [candidate] (1.138 s) : 0, 1138347
GlobalTracer [baseline] (422.393 ms) : 0, 422393
GlobalTracer [candidate] (420.827 ms) : 0, 420827
AppSec [baseline] (66.306 ms) : 0, 66306
AppSec [candidate] (66.728 ms) : 0, 66728
IAST [baseline] (24.62 ms) : 0, 24620
IAST [candidate] (25.215 ms) : 0, 25215
Remote Config [baseline] (777.459 µs) : 0, 777
Remote Config [candidate] (761.673 µs) : 0, 762
Telemetry [baseline] (9.304 ms) : 0, 9304
Telemetry [candidate] (8.468 ms) : 0, 8468
section iast_TELEMETRY_OFF
BytebuddyAgent [baseline] (1.125 s) : 0, 1124735
BytebuddyAgent [candidate] (1.127 s) : 0, 1126921
GlobalTracer [baseline] (420.661 ms) : 0, 420661
GlobalTracer [candidate] (421.132 ms) : 0, 421132
AppSec [baseline] (66.648 ms) : 0, 66648
AppSec [candidate] (66.724 ms) : 0, 66724
IAST [baseline] (22.64 ms) : 0, 22640
IAST [candidate] (21.081 ms) : 0, 21081
Remote Config [baseline] (762.255 µs) : 0, 762
Remote Config [candidate] (751.155 µs) : 0, 751
Telemetry [baseline] (10.668 ms) : 0, 10668
Telemetry [candidate] (10.802 ms) : 0, 10802
LoadParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 5 metrics, 17 unstable metrics. Request duration reports for petclinicgantt
title petclinic - request duration [CI 0.99] : candidate=1.26.0-SNAPSHOT~aa39e0829b, baseline=1.26.0-SNAPSHOT~1878db6329
dateFormat X
axisFormat %s
section baseline
no_agent (1.738 ms) : 1714, 1763
. : milestone, 1738,
appsec (2.228 ms) : 2195, 2260
. : milestone, 2228,
iast (1.946 ms) : 1913, 1980
. : milestone, 1946,
profiling (1.909 ms) : 1875, 1942
. : milestone, 1909,
tracing (1.91 ms) : 1877, 1944
. : milestone, 1910,
section candidate
no_agent (1.724 ms) : 1699, 1749
. : milestone, 1724,
appsec (2.217 ms) : 2184, 2250
. : milestone, 2217,
iast (1.935 ms) : 1902, 1968
. : milestone, 1935,
profiling (1.947 ms) : 1909, 1985
. : milestone, 1947,
tracing (1.896 ms) : 1862, 1930
. : milestone, 1896,
Request duration reports for insecure-bankgantt
title insecure-bank - request duration [CI 0.99] : candidate=1.26.0-SNAPSHOT~aa39e0829b, baseline=1.26.0-SNAPSHOT~1878db6329
dateFormat X
axisFormat %s
section baseline
no_agent (449.899 µs) : 421, 479
. : milestone, 450,
iast (600.686 µs) : 570, 631
. : milestone, 601,
iast_FULL (663.692 µs) : 633, 695
. : milestone, 664,
iast_INACTIVE (538.95 µs) : 509, 569
. : milestone, 539,
iast_TELEMETRY_OFF (568.319 µs) : 537, 600
. : milestone, 568,
tracing (531.063 µs) : 501, 562
. : milestone, 531,
section candidate
no_agent (450.796 µs) : 421, 480
. : milestone, 451,
iast (575.073 µs) : 544, 606
. : milestone, 575,
iast_FULL (660.042 µs) : 628, 692
. : milestone, 660,
iast_INACTIVE (541.77 µs) : 512, 572
. : milestone, 542,
iast_TELEMETRY_OFF (567.099 µs) : 536, 598
. : milestone, 567,
tracing (544.172 µs) : 513, 575
. : milestone, 544,
|
|
The DEBUGGER track is only available for internal orgs at the moment, we need to wait to merge this PR until we GA the track to all orgs. |
cimi
left a comment
There was a problem hiding this comment.
Thank you, looks good! 🙌 Left some comments, nothing blocking.
The debugger track has been enabled for customer orgs but we're still in standby; we can start sending traffic soon.
Let's test this build in our backend services next week and if everything is fine we can merge.
There was a problem hiding this comment.
Nit: it would be nicer if the feature discovery API returned an optional path with the endpoint, so it's guaranteed that what we return matches what we checked for.
Since this is not specific to our endpoint, I assume it requires a lot of refactoring - I'm not suggesting to do this in this PR 🙂
There was a problem hiding this comment.
Nit: we could keep the old constructor and default to the old endpoint inside it - that way we don't need to update everywhere.
Don't feel strongly about it, if you want to keep this explicit that's fine.
There was a problem hiding this comment.
want to keep it explicit, easier also for tests
There was a problem hiding this comment.
Nit: could we replace this check with ddAgentFeaturesDiscovery.supportsDebuggerDiagnostics() in the caller of the constructor of this class?
Instead of matching the endpoint against a string, just ask the caller to say if this is should be a multipart upload or not.
There was a problem hiding this comment.
Nit: we could make an overload for this method with no tags and avoid passing the empty string.
There was a problem hiding this comment.
in fact I need to pass them like for the non-multipart one
There was a problem hiding this comment.
I don't understand this change - we're doing the tags sanitization twice now, do we still need the serviceName field?
There was a problem hiding this comment.
is service sanitization done on the backend?
for serviceName, .NET is doing the same. ping @ojung
There was a problem hiding this comment.
I think the sanitization is mostly used in places where we put things into the tags. There is backend-specific sanitization in the backend, but I think generally what we should do is be consistent. So if we're sanitizing the service name in other places, we should sanitize it in the same way here to be able to reliably link back to a service from any tags/places that a service name is uploaded. Does that make sense?
There was a problem hiding this comment.
every time we use the config.getServiceName in the tracer we sanitize it:
- https://github.com/DataDog/dd-trace-java/blob/master/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/agent/ConfigurationUpdater.java#L78
- https://github.com/DataDog/dd-trace-java/blob/master/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/agent/DebuggerProductChangesListener.java#L81
- https://github.com/DataDog/dd-trace-java/blob/master/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/agent/ProbeStatus.java#L246
e4a327c to
8275795
Compare
datadog agent is now exposing a new endpoint: /debugger/v1/diagnostics This endpoint is used to send probe statuses to a dedicated debugger track. we add detection o this new endpoint and create a dedicated BatchUploader to this endpoint using attachment. if the endpoint is not available (old datadog agent) we send to the previous url as before.
8275795 to
aa39e08
Compare
What Does This Do
datadog agent is now exposing a new endpoint: /debugger/v1/diagnostics This endpoint is used to send probe statuses to a dedicated debugger track.
we add detection o this new endpoint and create a dedicated BatchUploader to this endpoint using attachment.
if the endpoint is not available (old datadog agent) we send to the previous url as before.
Motivation
Additional Notes
Jira ticket: DEBUG-1853