-
Notifications
You must be signed in to change notification settings - Fork 439
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ddtrace/tracer: initialize runtimeMetricsV2 with statsd "direct" client #3006
base: main
Are you sure you want to change the base?
Conversation
Datadog ReportBranch report: ✅ 0 Failed, 5094 Passed, 67 Skipped, 2m 57.64s Total Time |
818069b
to
f1ef6cb
Compare
f1ef6cb
to
f7fdf31
Compare
3bc6106
to
9beb947
Compare
BenchmarksBenchmark execution time: 2024-12-04 17:36:02 Comparing candidate commit 9beb947 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 59 metrics, 0 unstable metrics. |
@DataDog/data-streams-monitoring @DataDog/apm-idm-go Can you review this, please? |
What does this PR do?
It initializes runtimeMetricsV2 with the "direct" client, which provides the
DistributionSamples()
method (in addition to all the usualstatsd.Client
methods).Motivation
See DataDog/go-runtime-metrics-internal#8.
The Go
runtime/metrics
package maintains histograms, and we want to submit those to the Datadog API as distributions for best UX. We can roughly do so by submitting the midpoint of each bucket from the Go histogram, with a weight corresponding to the number of items in the bucket.If we were to use the
Distribution()
method of the regular client, we would have to call it in a loop for the same bucket midpoint, which would be extremely wasteful for buckets containing large number of items. Instead, theDistributionSamples()
method allow us to rig therate
in order to achieve the same result, while sending only one point per bucket.Reviewer's Checklist
v2-dev
branch and reviewed by @DataDog/apm-go.Unsure? Have a question? Request a review!