-
Notifications
You must be signed in to change notification settings - Fork 26.8k
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
feat(trace): postprocess trace reporter for datadog #35032
Conversation
07dd0fa
to
66df6b3
Compare
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
66df6b3
to
0de1e71
Compare
This comment has been minimized.
This comment has been minimized.
0de1e71
to
e1a2d75
Compare
This comment has been minimized.
This comment has been minimized.
scripts/trace-dd.mjs
Outdated
// | ||
// We have to read through end of the trace - | ||
// There's no gaurantee collected trace have order for its parent span to inner childs, which | ||
// we have to reconstruct all of tree here before send actual traces. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The wording of this sentence is a little confusing. Maybe something like: "Trace events in the input file can appear out of order, so we need to remodel the shape of the span tree before reporting."
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Left a nitpick, but otherwise looks good.
5eef10b
to
2a7c7a1
Compare
This comment has been minimized.
This comment has been minimized.
Is this an internal feature? If not, you could also consider using Opentelemetry which supports multiple exporters including data dog |
|
2a7c7a1
to
7134f21
Compare
Failing test suitesCommit: 7134f21
Expand output● with outdated sharp › Server support with next.config.js › should maintain animated png 2
Read more about building and testing Next.js in contributing.md. |
7134f21
to
2564065
Compare
This comment has been minimized.
This comment has been minimized.
2564065
to
5be9fac
Compare
5be9fac
to
1d3802c
Compare
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Stats from current PRDefault Build (Decrease detected ✓)General Overall increase
|
vercel/next.js canary | kwonoj/next.js remote-trace-adapter | Change | |
---|---|---|---|
buildDuration | 15s | 15.6s | |
buildDurationCached | 6.1s | 6.2s | |
nodeModulesSize | 372 MB | 372 MB |
Page Load Tests Overall decrease ⚠️
vercel/next.js canary | kwonoj/next.js remote-trace-adapter | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.937 | 3.043 | |
/ avg req/sec | 851.18 | 821.67 | |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.303 | 1.327 | |
/error-in-render avg req/sec | 1918.47 | 1884.34 |
Client Bundles (main, webpack)
vercel/next.js canary | kwonoj/next.js remote-trace-adapter | Change | |
---|---|---|---|
925.HASH.js gzip | 179 B | 179 B | ✓ |
framework-HASH.js gzip | 42 kB | 42 kB | ✓ |
main-HASH.js gzip | 27.9 kB | 27.9 kB | ✓ |
webpack-HASH.js gzip | 1.44 kB | 1.44 kB | ✓ |
Overall change | 71.5 kB | 71.5 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | kwonoj/next.js remote-trace-adapter | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | kwonoj/next.js remote-trace-adapter | Change | |
---|---|---|---|
_app-HASH.js gzip | 1.36 kB | 1.36 kB | ✓ |
_error-HASH.js gzip | 192 B | 192 B | ✓ |
amp-HASH.js gzip | 309 B | 309 B | ✓ |
css-HASH.js gzip | 327 B | 327 B | ✓ |
dynamic-HASH.js gzip | 2.57 kB | 2.57 kB | ✓ |
head-HASH.js gzip | 351 B | 351 B | ✓ |
hooks-HASH.js gzip | 920 B | 920 B | ✓ |
image-HASH.js gzip | 5.09 kB | 5.09 kB | ✓ |
index-HASH.js gzip | 263 B | 263 B | ✓ |
link-HASH.js gzip | 2.26 kB | 2.26 kB | ✓ |
routerDirect..HASH.js gzip | 320 B | 320 B | ✓ |
script-HASH.js gzip | 387 B | 387 B | ✓ |
withRouter-HASH.js gzip | 319 B | 319 B | ✓ |
85e02e95b279..7e3.css gzip | 107 B | 107 B | ✓ |
Overall change | 14.8 kB | 14.8 kB | ✓ |
Client Build Manifests
vercel/next.js canary | kwonoj/next.js remote-trace-adapter | Change | |
---|---|---|---|
_buildManifest.js gzip | 460 B | 460 B | ✓ |
Overall change | 460 B | 460 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | kwonoj/next.js remote-trace-adapter | Change | |
---|---|---|---|
index.html gzip | 531 B | 531 B | ✓ |
link.html gzip | 545 B | 545 B | ✓ |
withRouter.html gzip | 526 B | 526 B | ✓ |
Overall change | 1.6 kB | 1.6 kB | ✓ |
Default Build with SWC (Decrease detected ✓)
General Overall increase ⚠️
vercel/next.js canary | kwonoj/next.js remote-trace-adapter | Change | |
---|---|---|---|
buildDuration | 17.6s | 19s | |
buildDurationCached | 5.8s | 5.8s | |
nodeModulesSize | 372 MB | 372 MB |
Page Load Tests Overall decrease ⚠️
vercel/next.js canary | kwonoj/next.js remote-trace-adapter | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.913 | 2.994 | |
/ avg req/sec | 858.35 | 834.98 | |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.323 | 1.326 | 0 |
/error-in-render avg req/sec | 1889.72 | 1884.73 |
Client Bundles (main, webpack)
vercel/next.js canary | kwonoj/next.js remote-trace-adapter | Change | |
---|---|---|---|
925.HASH.js gzip | 178 B | 178 B | ✓ |
framework-HASH.js gzip | 42.3 kB | 42.3 kB | ✓ |
main-HASH.js gzip | 28.2 kB | 28.2 kB | ✓ |
webpack-HASH.js gzip | 1.45 kB | 1.45 kB | ✓ |
Overall change | 72.1 kB | 72.1 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | kwonoj/next.js remote-trace-adapter | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | kwonoj/next.js remote-trace-adapter | Change | |
---|---|---|---|
_app-HASH.js gzip | 1.35 kB | 1.35 kB | ✓ |
_error-HASH.js gzip | 179 B | 179 B | ✓ |
amp-HASH.js gzip | 313 B | 313 B | ✓ |
css-HASH.js gzip | 324 B | 324 B | ✓ |
dynamic-HASH.js gzip | 2.56 kB | 2.56 kB | ✓ |
head-HASH.js gzip | 351 B | 351 B | ✓ |
hooks-HASH.js gzip | 921 B | 921 B | ✓ |
image-HASH.js gzip | 5.23 kB | 5.23 kB | ✓ |
index-HASH.js gzip | 261 B | 261 B | ✓ |
link-HASH.js gzip | 2.33 kB | 2.33 kB | ✓ |
routerDirect..HASH.js gzip | 322 B | 322 B | ✓ |
script-HASH.js gzip | 388 B | 388 B | ✓ |
withRouter-HASH.js gzip | 317 B | 317 B | ✓ |
85e02e95b279..7e3.css gzip | 107 B | 107 B | ✓ |
Overall change | 15 kB | 15 kB | ✓ |
Client Build Manifests
vercel/next.js canary | kwonoj/next.js remote-trace-adapter | Change | |
---|---|---|---|
_buildManifest.js gzip | 459 B | 459 B | ✓ |
Overall change | 459 B | 459 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | kwonoj/next.js remote-trace-adapter | Change | |
---|---|---|---|
index.html gzip | 530 B | 530 B | ✓ |
link.html gzip | 544 B | 544 B | ✓ |
withRouter.html gzip | 525 B | 525 B | ✓ |
Overall change | 1.6 kB | 1.6 kB | ✓ |
This PR is a companion change to e76712f @Brooooooklyn is working on.
Description
PR introduces new script under
/scripts
, which does post-process trace files generated by performance metrics script. In the script, it parses generated trace output file, then recrated spans with proper chronogical order to send to one of the monitoring system. Currently, it is tied to specific monitoring vendor but constructed spans are mostly opentracing-compatible which can be migrated easily later.The goals of this script is to observe specific usecase sceanario of next.js (i.e
build
command) over time in the development branch. It is not intended to each individual manually runs this even though it is techinically possible. Instead, it is expected to setup proper CI actions to trigger.Given this trace is intended to be used for development branch and not aim to actual end users for the release build, one of the deliberate decisions made in this PR is to do
postprocessing
generated trace files by reconstructing spans. This allows existing trace implementation under/trace/
as much as non-invasive, also ensure this won't affect any prod users other than development branch. The only changes made to actual next.js codebase is 6b84725 to include proper wall-clock time to reconstruct span. It may possible to revisit some of defined structures of spans to consolidate possibly overlapping properties (i.enow
vs.timestamp
), but that'll require some more thought around general span improvement.There aren't automated testing for the changes. You may need to setup proper agent with environments to confirm if script correctly sends traces.
Bug
fixes #number
contributing.md
Feature
fixes #number
contributing.md
Documentation / Examples
yarn lint