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

[DEBUG-2503] Add support for span code origin #4449

Draft
wants to merge 22 commits into
base: master
Choose a base branch
from

Conversation

watson
Copy link
Collaborator

@watson watson commented Jul 1, 2024

What does this PR do?

This PR adds support for a new feature called "Code Origin for Spans" (previously called "Span Origin"). This feature will, in its most basic form, allow users to see where in their code base a span was started/created.

To enable, set DD_TRACE_SPAN_ORIGIN_ENABLED=true.

By default, code origin is only set for spans whos callstack contains user land stack frames.

To support code origin on entry spans (i.e. the span automatically created when an incoming HTTP request is being instrumented), one would need to add this to the router instrumentation for each web framework. This PR includes support for code origin on Fastify entry spans only.

For reference, here's a PR that implements Code Origin in the Java tracer: DataDog/dd-trace-java#7001

Motivation

This makes it easier to understand what each span shown in the flame graph represents.

Tasks

  • Support more frameworks for entry spans, than just Fastify
  • Change how the code origin feature is enabled according to the RFC
  • Rename tags according to newly decided API once the server supports the new tags
  • Add documentation
  • Improve test coverage
  • Code cleanup
  • Benchmarks?

@watson watson self-assigned this Jul 1, 2024
Copy link

github-actions bot commented Jul 1, 2024

Overall package size

Self size: 6.86 MB
Deduped: 58.36 MB
No deduping: 58.64 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/native-appsec | 8.0.1 | 15.59 MB | 15.6 MB | | @datadog/native-iast-taint-tracking | 3.0.0 | 11.14 MB | 11.15 MB | | @datadog/pprof | 5.3.0 | 9.85 MB | 10.22 MB | | protobufjs | 7.2.5 | 2.77 MB | 6.56 MB | | @datadog/native-iast-rewriter | 2.3.1 | 2.15 MB | 2.24 MB | | @opentelemetry/core | 1.14.0 | 872.87 kB | 1.47 MB | | @datadog/native-metrics | 2.0.0 | 898.77 kB | 1.3 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | import-in-the-middle | 1.8.1 | 71.67 kB | 785.15 kB | | msgpack-lite | 0.1.26 | 201.16 kB | 281.59 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 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 | | lru-cache | 7.14.0 | 74.95 kB | 74.95 kB | | ignore | 5.3.1 | 51.46 kB | 51.46 kB | | int64-buffer | 0.1.10 | 49.18 kB | 49.18 kB | | shell-quote | 1.8.1 | 44.96 kB | 44.96 kB | | istanbul-lib-coverage | 3.2.0 | 29.34 kB | 29.34 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 | | path-to-regexp | 0.1.7 | 6.78 kB | 6.78 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 Jul 1, 2024

Benchmarks

Benchmark execution time: 2024-07-19 13:25:37

Comparing candidate commit 297bdfa in PR branch watson/span-origin with baseline commit 1cf552f in branch master.

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

Copy link

codecov bot commented Jul 1, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 69.19%. Comparing base (2c1367b) to head (cf52e47).
Report is 4 commits behind head on master.

Additional details and impacted files
@@             Coverage Diff             @@
##           master    #4449       +/-   ##
===========================================
- Coverage   93.38%   69.19%   -24.20%     
===========================================
  Files         100        1       -99     
  Lines        3160      198     -2962     
  Branches       33       33               
===========================================
- Hits         2951      137     -2814     
+ Misses        209       61      -148     

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

@watson watson changed the title [DEBUG-2503] Add experimental support for span origin [DEBUG-2503] Add support for span code origin Jul 3, 2024
@watson watson force-pushed the watson/span-origin branch 2 times, most recently from 4f6732a to cf52e47 Compare July 4, 2024 10:07
watson added 20 commits July 19, 2024 15:15
To enable, set `DD_TRACE_EXPERIMENTAL_SPAN_ORIGIN_ENABLED=true`.

By default span origin is only set for spans whos callstack contains
user land stack frames.

To support span origin on entry spans (i.e. the span automatically
created when an incoming HTTP request is being instrumented), one would
need to add this to the router instrumentation for each web framework.

This commit includes support for span origin on Fastify entry spans
only.
Copy link
Collaborator Author

watson commented Jul 19, 2024

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @watson and the rest of your teammates on Graphite Graphite

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.

None yet

1 participant