Skip to content

Add _dd.integration to spans to calculate internal stats #5652

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

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

amarziali
Copy link
Contributor

@amarziali amarziali commented May 5, 2025

What does this PR do?

This PR adds _dd.integration tag to all the spans containing the integration name. While the component tag could have the same information, there is no guarantee about the content of the component tag since it can be modified by the user.
This one is internal and the user cannot change it.

We are changing all the tracers to infer this information in order to calculate stats upstream around integration usage

Motivation

Plugin Checklist

Additional Notes

Copy link

github-actions bot commented May 5, 2025

Overall package size

Self size: 9.3 MB
Deduped: 102.55 MB
No deduping: 103.07 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.5.1 | 29.73 MB | 29.73 MB | | @datadog/native-appsec | 8.5.2 | 19.33 MB | 19.34 MB | | @datadog/native-iast-taint-tracking | 3.3.1 | 13.99 MB | 13.99 MB | | @datadog/pprof | 5.7.1 | 9.51 MB | 9.88 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.4.0 | 2.77 MB | 5.42 MB | | @datadog/wasm-js-rewriter | 4.0.1 | 2.85 MB | 3.58 MB | | @datadog/native-metrics | 3.1.1 | 1.02 MB | 1.43 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | import-in-the-middle | 1.13.1 | 117.64 kB | 839.26 kB | | source-map | 0.7.4 | 226 kB | 226 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | lru-cache | 7.18.3 | 133.92 kB | 133.92 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.1 | 109.9 kB | 109.9 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 5.3.2 | 53.63 kB | 53.63 kB | | istanbul-lib-coverage | 3.2.0 | 29.34 kB | 29.34 kB | | rfdc | 1.4.1 | 27.15 kB | 27.15 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | dc-polyfill | 0.1.8 | 25.08 kB | 25.08 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | shell-quote | 1.8.2 | 23.54 kB | 23.54 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | semifies | 1.0.0 | 15.84 kB | 15.84 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | ttl-set | 1.0.0 | 4.61 kB | 9.69 kB | | mutexify | 1.4.0 | 5.71 kB | 8.74 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | module-details-from-path | 1.0.3 | 4.47 kB | 4.47 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

Copy link

codecov bot commented May 5, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 79.06%. Comparing base (07824ea) to head (d61aea3).

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #5652      +/-   ##
==========================================
- Coverage   79.12%   79.06%   -0.07%     
==========================================
  Files         513      512       -1     
  Lines       23497    23426      -71     
==========================================
- Hits        18593    18522      -71     
  Misses       4904     4904              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@datadog-datadog-prod-us1
Copy link

Datadog Report

Branch report: andrea.marziali/component-stat
Commit report: 444454f
Test service: dd-trace-js-integration-tests

✅ 0 Failed, 933 Passed, 0 Skipped, 15m 35.5s Total Time

@pr-commenter
Copy link

pr-commenter bot commented May 5, 2025

Benchmarks

Benchmark execution time: 2025-05-05 06:56:53

Comparing candidate commit d61aea3 in PR branch andrea.marziali/component-stat with baseline commit 07824ea in branch master.

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

scenario:spans-finish-immediately-18

  • 🟥 instructions [+137.0M instructions; +141.4M instructions] or [+6.325%; +6.530%]

scenario:spans-finish-immediately-20

  • 🟥 instructions [+125.4M instructions; +129.7M instructions] or [+6.539%; +6.763%]

scenario:spans-finish-immediately-22

  • 🟥 instructions [+134.7M instructions; +143.6M instructions] or [+6.576%; +7.009%]

@amarziali amarziali marked this pull request as ready for review May 5, 2025 07:29
@amarziali amarziali requested a review from a team as a code owner May 5, 2025 07:29
Copy link

@vandonr vandonr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

approving the intent, but I never touched the JS tracer so I can't really tell about the code

Copy link
Contributor

@wconti27 wconti27 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

integrationName isn't a very reliable attribute to be using within the Opentracing startSpan, for the most part it is not being used across the board for all integrations. If you look at Org2 metrics for spans_created, you will see only about 10 integrations are setting it properly, and the vast majority are opentracing. If we want to go this route, we will need to update the integrations to properly set this attribute when creating a span, which will be quite a few changes. It would also be helpful to add some assertions in the plugin tests directly that the _dd.integration is being set correctly, such as for express or mysql. But in the current state, we are going to end up mainly with opentracing being the value sent.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants