trace/stats: Add HTTP Method and Endpoint for resource renaming#39372
Conversation
Regression DetectorRegression Detector ResultsMetrics dashboard Baseline: 2f79110 Optimization Goals: ✅ No significant changes detected
|
| perf | experiment | goal | Δ mean % | Δ mean % CI | trials | links |
|---|---|---|---|---|---|---|
| ✅ | docker_containers_cpu | % cpu utilization | -6.14 | [-9.23, -3.04] | 1 | Logs |
Fine details of change detection per experiment
| perf | experiment | goal | Δ mean % | Δ mean % CI | trials | links |
|---|---|---|---|---|---|---|
| ➖ | quality_gate_metrics_logs | memory utilization | +2.30 | [+1.94, +2.66] | 1 | Logs bounds checks dashboard |
| ➖ | quality_gate_logs | % cpu utilization | +0.62 | [-2.12, +3.36] | 1 | Logs bounds checks dashboard |
| ➖ | tcp_syslog_to_blackhole | ingress throughput | +0.55 | [+0.49, +0.62] | 1 | Logs |
| ➖ | otlp_ingest_logs | memory utilization | +0.45 | [+0.30, +0.60] | 1 | Logs |
| ➖ | ddot_logs | memory utilization | +0.24 | [+0.13, +0.35] | 1 | Logs |
| ➖ | ddot_metrics | memory utilization | +0.17 | [-0.02, +0.36] | 1 | Logs |
| ➖ | file_to_blackhole_1000ms_latency | egress throughput | +0.16 | [-0.41, +0.72] | 1 | Logs |
| ➖ | file_to_blackhole_500ms_latency | egress throughput | +0.09 | [-0.51, +0.68] | 1 | Logs |
| ➖ | tcp_dd_logs_filter_exclude | ingress throughput | +0.03 | [+0.00, +0.05] | 1 | Logs |
| ➖ | uds_dogstatsd_to_api | ingress throughput | +0.01 | [-0.10, +0.13] | 1 | Logs |
| ➖ | file_to_blackhole_0ms_latency | egress throughput | +0.01 | [-0.59, +0.62] | 1 | Logs |
| ➖ | quality_gate_idle | memory utilization | -0.01 | [-0.06, +0.05] | 1 | Logs bounds checks dashboard |
| ➖ | file_tree | memory utilization | -0.04 | [-0.07, -0.00] | 1 | Logs |
| ➖ | file_to_blackhole_100ms_latency | egress throughput | -0.07 | [-0.65, +0.51] | 1 | Logs |
| ➖ | quality_gate_idle_all_features | memory utilization | -0.07 | [-0.10, -0.05] | 1 | Logs bounds checks dashboard |
| ➖ | otlp_ingest_metrics | memory utilization | -0.12 | [-0.30, +0.06] | 1 | Logs |
| ➖ | uds_dogstatsd_20mb_12k_contexts_20_senders | memory utilization | -0.24 | [-0.28, -0.20] | 1 | Logs |
| ➖ | docker_containers_memory | memory utilization | -1.20 | [-1.34, -1.06] | 1 | Logs |
| ✅ | docker_containers_cpu | % cpu utilization | -6.14 | [-9.23, -3.04] | 1 | Logs |
Bounds Checks: ❌ Failed
| perf | experiment | bounds_check_name | replicates_passed | links |
|---|---|---|---|---|
| ❌ | docker_containers_cpu | simple_check_run | 9/10 | |
| ✅ | docker_containers_memory | memory_usage | 10/10 | |
| ❌ | docker_containers_memory | simple_check_run | 9/10 | |
| ✅ | file_to_blackhole_0ms_latency | lost_bytes | 10/10 | |
| ✅ | file_to_blackhole_0ms_latency | memory_usage | 10/10 | |
| ✅ | file_to_blackhole_1000ms_latency | memory_usage | 10/10 | |
| ✅ | file_to_blackhole_100ms_latency | lost_bytes | 10/10 | |
| ✅ | file_to_blackhole_100ms_latency | memory_usage | 10/10 | |
| ✅ | file_to_blackhole_500ms_latency | lost_bytes | 10/10 | |
| ✅ | file_to_blackhole_500ms_latency | memory_usage | 10/10 | |
| ✅ | quality_gate_idle | intake_connections | 10/10 | bounds checks dashboard |
| ✅ | quality_gate_idle | memory_usage | 10/10 | bounds checks dashboard |
| ✅ | quality_gate_idle_all_features | intake_connections | 10/10 | bounds checks dashboard |
| ✅ | quality_gate_idle_all_features | memory_usage | 10/10 | bounds checks dashboard |
| ✅ | quality_gate_logs | intake_connections | 10/10 | bounds checks dashboard |
| ✅ | quality_gate_logs | lost_bytes | 10/10 | bounds checks dashboard |
| ✅ | quality_gate_logs | memory_usage | 10/10 | bounds checks dashboard |
| ✅ | quality_gate_metrics_logs | cpu_usage | 10/10 | bounds checks dashboard |
| ✅ | quality_gate_metrics_logs | intake_connections | 10/10 | bounds checks dashboard |
| ✅ | quality_gate_metrics_logs | lost_bytes | 10/10 | bounds checks dashboard |
| ✅ | quality_gate_metrics_logs | memory_usage | 10/10 | bounds checks dashboard |
Explanation
Confidence level: 90.00%
Effect size tolerance: |Δ mean %| ≥ 5.00%
Performance changes are noted in the perf column of each table:
- ✅ = significantly better comparison variant performance
- ❌ = significantly worse comparison variant performance
- ➖ = no significant change in performance
A regression test is an A/B test of target performance in a repeatable rig, where "performance" is measured as "comparison variant minus baseline variant" for an optimization goal (e.g., ingress throughput). Due to intrinsic variability in measuring that goal, we can only estimate its mean value for each experiment; we report uncertainty in that value as a 90.00% confidence interval denoted "Δ mean % CI".
For each experiment, we decide whether a change in performance is a "regression" -- a change worth investigating further -- if all of the following criteria are true:
-
Its estimated |Δ mean %| ≥ 5.00%, indicating the change is big enough to merit a closer look.
-
Its 90.00% confidence interval "Δ mean % CI" does not contain zero, indicating that if our statistical model is accurate, there is at least a 90.00% chance there is a difference in performance between baseline and comparison variants.
-
Its configuration does not mark it "erratic".
CI Pass/Fail Decision
✅ Passed. All Quality Gates passed.
- quality_gate_idle_all_features, bounds check memory_usage: 10/10 replicas passed. Gate passed.
- quality_gate_idle_all_features, bounds check intake_connections: 10/10 replicas passed. Gate passed.
- quality_gate_metrics_logs, bounds check lost_bytes: 10/10 replicas passed. Gate passed.
- quality_gate_metrics_logs, bounds check cpu_usage: 10/10 replicas passed. Gate passed.
- quality_gate_metrics_logs, bounds check intake_connections: 10/10 replicas passed. Gate passed.
- quality_gate_metrics_logs, bounds check memory_usage: 10/10 replicas passed. Gate passed.
- quality_gate_idle, bounds check intake_connections: 10/10 replicas passed. Gate passed.
- quality_gate_idle, bounds check memory_usage: 10/10 replicas passed. Gate passed.
- quality_gate_logs, bounds check intake_connections: 10/10 replicas passed. Gate passed.
- quality_gate_logs, bounds check memory_usage: 10/10 replicas passed. Gate passed.
- quality_gate_logs, bounds check lost_bytes: 10/10 replicas passed. Gate passed.
963329a to
1e16398
Compare
2f8f75d to
63e4d49
Compare
441c5cf to
119f830
Compare
119f830 to
1086c3b
Compare
Static quality checks✅ Please find below the results from static quality gates Successful checksInfo
|
|
/merge |
|
View all feedbacks in Devflow UI.
The expected merge time in
|
## Description This PR implements the resource renaming feature specified in RFC-1051. This contains the following changes: - add the `http.endpoint` tag when `http.route` is not reported by an integration. Its value is a "simplified endpoint" representation of the url path. - add the http method and http endpoint in the aggregation key of for span stats (see corresponding agent PR DataDog/datadog-agent#39372) The feature is turned off by default behind the env var: "DD_TRACE_RESOURCE_RENAMING_ENABLED" APPSEC-58892 ## Notes Added the TRACING_CONFIG_NONDEFAULT_3 scenario to the CI. It contains the system tests for this feature. ## Checklist - [x] PR author has checked that all the criteria below are met - The PR description includes an overview of the change - The PR description articulates the motivation for the change - The change includes tests OR the PR description describes a testing strategy - The PR description notes risks associated with the change, if any - Newly-added code is easy to change - The change follows the [library release note guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html) - The change includes or references documentation updates if necessary - Backport labels are set (if [applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)) ## Reviewer Checklist - [x] Reviewer has checked that all the criteria below are met - Title is accurate - All changes are related to the pull request's stated goal - Avoids breaking [API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces) changes - Testing strategy adequately addresses listed risks - Newly-added code is easy to change - Release note makes sense to a user of the library - If necessary, author has acknowledged and discussed the performance implications of this PR as reported in the benchmarks PR comment - Backport labels are set in a manner that is consistent with the [release branch maintenance policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting) --------- Co-authored-by: Brett Langdon <[email protected]>
What does this PR do?
This PR adds the HTTP Method and HTTP Endpoint to the stats protobuf file.
This also includes all required changes to correctly construct a stat span with these new data.
Changes
As the method
NewStatSpanis also used in the dd-trace-go tracer that is imported in some contrib (like serverless), we chose to deprecated this method for this release and replace it byNewStatSpanWithHTTPEndpoint.Motivation
Describe how you validated your changes
Possible Drawbacks / Trade-offs
Additional Notes
RFC
Tracer PR that use the new updated stats: feat: resource renaming dd-trace-go#3851
Intake PR