Skip to content
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

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

anatolebeuzon
Copy link

@anatolebeuzon anatolebeuzon commented Dec 4, 2024

What does this PR do?

It initializes runtimeMetricsV2 with the "direct" client, which provides the DistributionSamples() method (in addition to all the usual statsd.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, the DistributionSamples() method allow us to rig the rate in order to achieve the same result, while sending only one point per bucket.

Reviewer's Checklist

  • Changed code has unit tests for its functionality at or near 100% coverage.
  • System-Tests covering this feature have been added and enabled with the va.b.c-dev version tag.
  • There is a benchmark for any new code, or changes to existing code.
  • If this interacts with the agent in a new way, a system test has been added.
  • Add an appropriate team label so this PR gets put in the right place for the release notes.
  • Non-trivial go.mod changes, e.g. adding new modules, are reviewed by @DataDog/dd-trace-go-guild.
  • For internal contributors, a matching PR should be created to the v2-dev branch and reviewed by @DataDog/apm-go.

Unsure? Have a question? Request a review!

@datadog-datadog-prod-us1
Copy link

datadog-datadog-prod-us1 bot commented Dec 4, 2024

Datadog Report

Branch report: anatoleb/runtime-metrics-use-direct-client
Commit report: ae4e6a8
Test service: dd-trace-go

✅ 0 Failed, 5094 Passed, 67 Skipped, 2m 57.64s Total Time

@anatolebeuzon anatolebeuzon force-pushed the anatoleb/runtime-metrics-use-direct-client branch from 818069b to f1ef6cb Compare December 4, 2024 16:43
@anatolebeuzon anatolebeuzon force-pushed the anatoleb/runtime-metrics-use-direct-client branch from f1ef6cb to f7fdf31 Compare December 4, 2024 16:45
@github-actions github-actions bot added the apm:ecosystem contrib/* related feature requests or bugs label Dec 4, 2024
@anatolebeuzon anatolebeuzon force-pushed the anatoleb/runtime-metrics-use-direct-client branch from 3bc6106 to 9beb947 Compare December 4, 2024 16:53
@anatolebeuzon anatolebeuzon marked this pull request as ready for review December 4, 2024 16:53
@anatolebeuzon anatolebeuzon requested review from a team as code owners December 4, 2024 16:53
@pr-commenter
Copy link

pr-commenter bot commented Dec 4, 2024

Benchmarks

Benchmark execution time: 2024-12-04 17:36:02

Comparing candidate commit 9beb947 in PR branch anatoleb/runtime-metrics-use-direct-client with baseline commit 076462a in branch main.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 59 metrics, 0 unstable metrics.

@darccio
Copy link
Member

darccio commented Dec 5, 2024

@DataDog/data-streams-monitoring @DataDog/apm-idm-go Can you review this, please?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
apm:ecosystem contrib/* related feature requests or bugs
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants