-
Notifications
You must be signed in to change notification settings - Fork 441
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
Conversation
Datadog ReportBranch report: ✅ 0 Failed, 5110 Passed, 67 Skipped, 2m 27.59s Total Time |
818069b
to
f1ef6cb
Compare
f1ef6cb
to
f7fdf31
Compare
3bc6106
to
9beb947
Compare
BenchmarksBenchmark execution time: 2024-12-12 14:48:32 Comparing candidate commit 71757de in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 58 metrics, 1 unstable metrics. |
@DataDog/data-streams-monitoring @DataDog/apm-idm-go Can you review this, please? |
92c0d51
to
71757de
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approving for the contrib/*
changes
ddtrace/tracer: initialize runtimeMetricsV2 with statsd "direct" client (#3006) Co-authored-by: Felix Geisendörfer <[email protected]> Co-authored-by: Nayef Ghattas <[email protected]> fix(.github/workflows): add tags-ignore to avoid running CI on pushing tags for contribs and other nested modules (#3005) Co-authored-by: Hannah Kim <[email protected]> contrib/envoyproxy: envoy external processing support (#2895) This PR adds a new gRPC Interceptor (StreamServerInterceptor) to support the interception of ext_proc v3 calls to gRPC server. When the interceptor is applied, all messages of the external processing protocol are instrumented without returning an handle to the original server code Co-authored-by: Eliott Bouhana <[email protected]> Co-authored-by: Flavien Darche <[email protected]> add go mod to workflows/apps (#3036) go.mod: module go.opentelemetry.io/collector/pdata@latest found (v1.21.0), but does not contain package go.opentelemetry.io/collector/pdata/internal/data/protogen/profiles/v1experimental (#3042) Signed-off-by: Eliott Bouhana <[email protected]> chore: update latest majors (#2993)
ddtrace/tracer: initialize runtimeMetricsV2 with statsd "direct" client (#3006) Co-authored-by: Felix Geisendörfer <[email protected]> Co-authored-by: Nayef Ghattas <[email protected]> fix(.github/workflows): add tags-ignore to avoid running CI on pushing tags for contribs and other nested modules (#3005) Co-authored-by: Hannah Kim <[email protected]> contrib/envoyproxy: envoy external processing support (#2895) This PR adds a new gRPC Interceptor (StreamServerInterceptor) to support the interception of ext_proc v3 calls to gRPC server. When the interceptor is applied, all messages of the external processing protocol are instrumented without returning an handle to the original server code Co-authored-by: Eliott Bouhana <[email protected]> Co-authored-by: Flavien Darche <[email protected]> add go mod to workflows/apps (#3036) go.mod: module go.opentelemetry.io/collector/pdata@latest found (v1.21.0), but does not contain package go.opentelemetry.io/collector/pdata/internal/data/protogen/profiles/v1experimental (#3042) Signed-off-by: Eliott Bouhana <[email protected]> chore: update latest majors (#2993)
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!