Skip to content

feat(tracing): AWS API Gateway Inferred Span Support#4837

Merged
wconti27 merged 44 commits intomasterfrom
conti/api-gateway-poc
Nov 12, 2024
Merged

feat(tracing): AWS API Gateway Inferred Span Support#4837
wconti27 merged 44 commits intomasterfrom
conti/api-gateway-poc

Conversation

@wconti27
Copy link
Copy Markdown
Contributor

@wconti27 wconti27 commented Oct 29, 2024

What does this PR do?

Created inferred spans for AWS Api Gateway for web integrations if the received request has a specific header (see RFC). The headers will also contain info on the route, start time of the request in MS, method, etc.

AIDM-419

Motivation

Plugin Checklist

Additional Notes

@wconti27 wconti27 requested a review from a team as a code owner October 29, 2024 19:04
@wconti27 wconti27 self-assigned this Oct 29, 2024
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Oct 29, 2024

Overall package size

Self size: 7.97 MB
Deduped: 64.99 MB
No deduping: 65.33 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/native-appsec | 8.2.1 | 19.18 MB | 19.19 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.5.0 | 2.51 MB | 2.65 MB | | @opentelemetry/core | 1.14.0 | 872.87 kB | 1.47 MB | | @datadog/native-metrics | 3.0.1 | 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 | | msgpack-lite | 0.1.26 | 201.16 kB | 281.59 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 | | 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 | | rfdc | 1.3.1 | 25.21 kB | 25.21 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 | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | path-to-regexp | 0.1.10 | 6.38 kB | 6.38 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

@wconti27 wconti27 requested a review from mhlidd October 29, 2024 19:41
mhlidd
mhlidd previously approved these changes Oct 29, 2024
@pr-commenter
Copy link
Copy Markdown

pr-commenter Bot commented Oct 30, 2024

Benchmarks

Benchmark execution time: 2024-11-12 20:06:40

Comparing candidate commit 23fc930 in PR branch conti/api-gateway-poc with baseline commit 70e99bd in branch master.

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

@wconti27 wconti27 requested a review from a team as a code owner October 30, 2024 17:23
Comment thread packages/dd-trace/src/plugins/util/web.js
const HTTP_URL = tags.HTTP_URL
const HTTP_METHOD = tags.HTTP_METHOD

const PROXY_HEADER_NAME = 'x-dd-proxy-name'
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Was there an RFC for these header named? Seems like a shame they aren't combined into 1 header.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This part is a bit subject to the AWS expectations for headers:

I don't know if there's a way to list multiple keys at once so that part would require a bit more research.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

From our tests, it seems like it's not possible to combine these values from AWS into 1 header, so our hands are pretty much tied and we're stuck with using separate headers.

tlhunter
tlhunter previously approved these changes Nov 4, 2024
Comment thread packages/dd-trace/src/plugins/util/inferred_proxy.js Outdated
Comment thread packages/dd-trace/test/plugins/util/inferred_proxy.spec.js Outdated
Comment thread packages/dd-trace/test/plugins/util/inferred_proxy.spec.js
Comment thread packages/dd-trace/src/plugins/util/inferred_proxy.js Outdated
Comment thread packages/dd-trace/src/plugins/util/web.js
Comment thread packages/dd-trace/test/plugins/util/inferred_proxy.spec.js Outdated
@codecov
Copy link
Copy Markdown

codecov Bot commented Nov 6, 2024

Codecov Report

Attention: Patch coverage is 97.29730% with 2 lines in your changes missing coverage. Please review.

Project coverage is 72.34%. Comparing base (0b4dab7) to head (f97ab67).
Report is 5 commits behind head on master.

Files with missing lines Patch % Lines
...ckages/dd-trace/src/plugins/util/inferred_proxy.js 95.65% 2 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           master    #4837       +/-   ##
===========================================
- Coverage   93.86%   72.34%   -21.52%     
===========================================
  Files         107      327      +220     
  Lines        3373    14879    +11506     
===========================================
+ Hits         3166    10764     +7598     
- Misses        207     4115     +3908     

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

@wconti27 wconti27 requested review from tlhunter and wantsui November 11, 2024 19:53
tlhunter
tlhunter previously approved these changes Nov 11, 2024
Comment thread packages/dd-trace/test/plugins/util/inferred_proxy.spec.js Outdated
Comment thread packages/dd-trace/test/plugins/util/inferred_proxy.spec.js Outdated
Comment thread packages/dd-trace/test/plugins/util/inferred_proxy.spec.js Outdated
Comment thread packages/dd-trace/test/plugins/util/inferred_proxy.spec.js
wantsui
wantsui previously approved these changes Nov 12, 2024
@wconti27 wconti27 merged commit 29ff735 into master Nov 12, 2024
@wconti27 wconti27 deleted the conti/api-gateway-poc branch November 12, 2024 20:49
rochdev pushed a commit that referenced this pull request Nov 13, 2024
* Add support for inferred spans to be created for proxies. Initially supports AWS API Gateway and creates a span when the required headers are attached on the received request.
---------

Co-authored-by: wantsui <wan.tsui@datadoghq.com>
@rochdev rochdev mentioned this pull request Nov 13, 2024
rochdev pushed a commit that referenced this pull request Nov 13, 2024
* Add support for inferred spans to be created for proxies. Initially supports AWS API Gateway and creates a span when the required headers are attached on the received request.
---------

Co-authored-by: wantsui <wan.tsui@datadoghq.com>
@rochdev rochdev mentioned this pull request Nov 13, 2024
rochdev pushed a commit that referenced this pull request Nov 19, 2024
* Add support for inferred spans to be created for proxies. Initially supports AWS API Gateway and creates a span when the required headers are attached on the received request.
---------

Co-authored-by: wantsui <wan.tsui@datadoghq.com>
rochdev pushed a commit that referenced this pull request Nov 19, 2024
* Add support for inferred spans to be created for proxies. Initially supports AWS API Gateway and creates a span when the required headers are attached on the received request.
---------

Co-authored-by: wantsui <wan.tsui@datadoghq.com>
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.

4 participants