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

Instrument dd-trace-api #5145

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
Open

Instrument dd-trace-api #5145

wants to merge 10 commits into from

Conversation

bengl
Copy link
Collaborator

@bengl bengl commented Jan 22, 2025

This is the initial PR that adds support for the (soon to be released) dd-trace-api module.

The dd-trace-api module works by sending all API calls through diagnostics channels, including the name of the function being called, all the arguments, and the this object. appropriate functions are passed through for any return values that need to be proxied.

What's proxying? Here, it refers to having a facade object presented by dd-trace-api that corresponds to a "real" object created by dd-trace. The facade allows dd-trace-api to never expose an internal object to the caller.

Testing is done primarily by checking that diagnostics channels map correctly to the internal function calls. Additional testing will take place in dd-trace-api to ensure the whole system works end-to-end.

@bengl bengl requested review from a team as code owners January 22, 2025 20:30
Copy link

github-actions bot commented Jan 22, 2025

Overall package size

Self size: 8.53 MB
Deduped: 94.89 MB
No deduping: 95.4 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.4.0 | 29.44 MB | 29.44 MB | | @datadog/native-appsec | 8.4.0 | 19.25 MB | 19.26 MB | | @datadog/native-iast-taint-tracking | 3.2.0 | 13.9 MB | 13.91 MB | | @datadog/pprof | 5.4.1 | 9.76 MB | 10.13 MB | | protobufjs | 7.2.5 | 2.77 MB | 5.16 MB | | @datadog/native-iast-rewriter | 2.6.1 | 2.59 MB | 2.73 MB | | @opentelemetry/core | 1.14.0 | 872.87 kB | 1.47 MB | | @datadog/native-metrics | 3.1.0 | 1.06 MB | 1.46 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | import-in-the-middle | 1.11.2 | 112.74 kB | 826.22 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.0 | 109.9 kB | 109.9 kB | | semver | 7.6.3 | 95.82 kB | 95.82 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 5.3.1 | 51.46 kB | 51.46 kB | | shell-quote | 1.8.1 | 44.96 kB | 44.96 kB | | istanbul-lib-coverage | 3.2.0 | 29.34 kB | 29.34 kB | | rfdc | 1.3.1 | 25.21 kB | 25.21 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | dc-polyfill | 0.1.4 | 23.1 kB | 23.1 kB | | retry | 0.13.1 | 18.85 kB | 18.85 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 | | 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

@pr-commenter
Copy link

pr-commenter bot commented Jan 22, 2025

Benchmarks

Benchmark execution time: 2025-01-22 20:46:58

Comparing candidate commit f79dfea in PR branch bengl/instrument-dd-trace-api with baseline commit c28765a in branch master.

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

const counter = apiMetrics.count('dd_trace_api.called', [
`name:${name.replace(':', '.')}`,
'api_version:v1',
`injection_enabled:${process.env.DD_INJECTION_ENABLED ? 'yes' : 'no'}`
Copy link
Member

Choose a reason for hiding this comment

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

Can the process.env.DD_INJECTION_ENABLED check be hoisted to the outermost scope? I'm assuming it doesn't change throughout the lifetime of a process and it doesn't seem to be set during tests.

Also hopefully future config changes will make the config file easier to read in files like this one without needing to grab env vars everywhere.

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.

2 participants