Correlate HTTP requests with scenarios and X-Ray, including embedded fragments
I maintainer di solito rispondono entro 3 giorni
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Problem
Backend logs and AWS X-Ray traces can't be tied to the user journeys the library records:
- No scenario id attached to the backend requests. A scenario's id links its RUM record, BI events and client logs, but requests made during the scenario carry nothing the backend can log or search by.
- Relative URLs get no X-Ray header. The RUM client checks its X-Ray rule against the URL exactly as the app passes it. Angular
HttpClientpasses relative URLs (/api/...), but the library's default rule only matches absolute same-origin URLs. So mostHttpClientrequests go out withoutX-Amzn-Trace-Id, even in a single app, and the backend can't continue the browser's trace. - Fragment requests aren't traced at all. In a micro-frontend page, the RUM client runs only in the shell and patches only the shell's
fetchandXMLHttpRequest. Each fragment (e.g. Web Fragments) runs in its own hidden iframe with its own copies of these, so its requests get no X-Ray header and no RUM HTTP events.
Proposed change
- Scenario header. Add
uwtScenarioHeaderInterceptor()anduwtScenarioContext(scenario). A request marked with a scenario gets anX-Uwt-Scenario-Id: <scenario.id>header; apps can rename it with{ headerName }. Requests are marked one by one, because several scenarios can run at once and nothing else can tell which one a request belongs to. The header is sent only on same-origin requests, only while telemetry is on, and never on unmarked requests. The interceptor only adds the header: settling the scenario stays with the caller ortraceScenario. - Relative URLs. Treat relative URLs as same-origin in the default
httptelemetry config. - Fragments. Let the shell's RUM sink trace fragments. At startup, a fragment's
'broadcast'sink hands itswindowto the shell, and the shell applies the RUM client's own fetch/XHR plugins to it. The fragment keeps its ownfetch, XHR and zone.js. The shell lets go of the window when the fragment is removed or destroyed. - Backend convention (documented). The backend logs the header as
scenarioIdand adds it to its X-Ray trace as thescenarioIdannotation, soannotation.scenarioId = "<id>"finds every trace of a journey.
Acceptance criteria
- Marked same-origin requests carry
X-Uwt-Scenario-Id. Unmarked requests, cross-origin requests, requests made while telemetry is off and server-side requests don't. - Concurrent scenarios each send their own id, and a retried request sends the same id again.
- Same-origin requests with relative URLs carry
X-Amzn-Trace-Id; cross-origin requests still don't. - Requests from a fragment using
provideUwtTelemetrySink('broadcast')carryX-Amzn-Trace-Id, with both the fetch and XHR backends. - Those requests appear as RUM HTTP and X-Ray events in the shell's session.
- A removed fragment is unpatched and not kept in memory by the shell.
- DESIGN.md and the README describe the behaviour, the backend convention and the limits.
Notes
- New public API:
uwtScenarioHeaderInterceptor,uwtScenarioContext,UwtScenarioHeaderOptionsandUWT_DEFAULT_SCENARIO_HEADER. The X-Ray changes need no changes in consumer apps. - Fragment requests count against the shared session's event budget (200 by default), the same as the shell's.
- Requests made before the shell's RUM client loads aren't traced, the same as in the shell today.
- Apps that pass their own
telemetriesconfig keep their own X-Ray rule.
- Lingua principale
- TypeScript
- Stelle
- 0
- Fork
- 0
- Merge medio
- 4g 8h
- PR unite (30g)
- 17
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di AbsaOSS/ui-watchtower
-
Create consumer application for validation, testing, and edge case simulationForse di nuovo libera @fateeand l’ha presa 33 giorni fa e non c’è nessuna pull request aperta. Apertaenhancement
AbsaOSS/ui-watchtower#2 · 1 assegnatario ·
I maintainer di solito rispondono entro 3 giorni
-
Create an Embedded Developer Diagnostics Panel and Testing ApplicationForse già presa @fateeand l’ha presa 33 giorni fa. Apertaenhancement
AbsaOSS/ui-watchtower#1 · 1 assegnatario ·
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di AbsaOSS/ui-watchtower
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
duolicious/duolicious#1943 ·
I maintainer di solito rispondono entro 1 giorno
-
bug needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100
nightly-labs/openbot#6451 ·
I maintainer di solito rispondono entro 1 giorno
-
complexity: easy good first issue impact: low
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
ueberdosis/hocuspocus#1211 ·
I maintainer di solito rispondono entro 1 giorno
-
e2e-failure ready-to-code
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
redhat-developer/rhdh-plugin-export-overlays#4733 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
S-Needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 2 giorni