Configura strumentazione chiamate Ajax
È possibile configurare la strumentazione delle chiamate Ajax in Application Performance Monitoring.
Per consentire l'esecuzione del trace a più livelli, l'agente del browser APM aggiunge un contesto di trace utilizzando intestazioni simili a 'X-B3-*' alle chiamate Ajax in uscita. Queste intestazioni informano un potenziale agente/tracer del server della traccia e dell'intervallo che ha attivato la chiamata ajax che consente quindi di eseguire report sul flusso completo dal browser ai server backend in base al contesto propagato.
Per impostazione predefinita, il comportamento precedente viene applicato a tutte le chiamate Ajax che condividono lo stesso dominio ed escludono le chiamate Ajax a domini esterni. L'ipotesi è che i domini esterni non condividano lo stesso ambiente di monitoraggio APM. Nei casi in cui questa logica non si applica, è possibile abilitare le intestazioni sulle chiamate a dominio esterno e/o disabilitare l'intestazione per alcune delle chiamate allo stesso dominio.
apmrum.traceSupportingEndpoints = [
{ headers: [ ], hostPattern: 'https://((identity)|(console)).*' },
{ headers: [ 'APM' ], hostPattern: 'https://my-rest-server.*' }
]
La configurazione precedente indica che per gli URL che iniziano con 'identity
' o 'console
', le intestazioni non devono essere manipolate (contesto vuoto), ma per quelli che iniziano con 'my-rest-server
', l'agente del browser APM è quindi presente idealmente, le intestazioni devono essere annotate con il contesto apm.
La configurazione apmrum.traceSupportingEndpoints
fa riferimento all'ordine della definizione. Viene utilizzata la definizione delle intestazioni del primo hostPattern
che corrisponde all'URL Ajax. Se la prima definizione contiene hostPattern: ".*"
, tutte le altre definizioni verranno ignorate. La configurazione consigliata consiste nell'utilizzare in modo coerente un prefisso o un suffisso dell'URL AJAX per creare la configurazione desiderata.
Errori CORS causati dall'agente browser APM
In alcuni casi, l'agente del browser causa l'errore delle richieste in un browser. Ad esempio, ciò si verifica quando le chiamate GET
vengono annotate con intestazioni B3
, che attiva un pre-volo.
Il server deve rispondere con l'intestazione ``Access-Control-Allow-Origin`` corretta a OPTIONS
e la chiamata GET
effettiva. Inoltre, il server deve contrassegnare le intestazioni relative al contesto in modo da evitare problemi.
Per informazioni sul protocollo CORS (Cross Origin Resource Sharing), vedere https://fetch.spec.whatwg.org/#cors-protocol.
Integrazione dell'agente browser con agenti di trace backend
Application Performance Monitoring può integrare l'agente del browser con gli agenti di trace backend.
L'agente del browser registra e invia il contesto di trace alle chiamate Ajax per una vista integrata dell'attività del browser e dell'attività backend. Questo può essere fatto utilizzando diversi tipi di intestazioni per diversi tipi di agenti server backend. Tali intestazioni personalizzate verranno aggiunte alle chiamate Ajax, con conseguente necessità di richieste di esecuzione preliminare per la convalida CORS (Cross Origin Resource Sharing). Per informazioni sul protocollo CORS, vedere https://fetch.spec.whatwg.org/#cors-protocol.
Quando il server non è configurato per gestire tali chiamate in modalità preliminare, il browser non gestirà le chiamate Ajax come previsto e l'applicazione potrebbe non funzionare come previsto. Per evitare problemi correlati, l'agente del browser APM controlla le chiamate Ajax e aggiunge intestazioni personalizzate solo alle richieste con una richiesta preliminare o alle richieste che passano allo stesso dominio.
I nomi di dominio vengono confrontati in base al dominio di secondo livello e di primo livello. Ad esempio, api.oracle.com
verrà considerato lo stesso dominio di apex.oracle.com
.
Configura endpoint di ripristino con agenti server
Quando un agente server viene installato su un sistema a cui si accede con un URL diverso da quello html, è necessaria una configurazione aggiuntiva. Questa configurazione informerà l'agente del browser che si desidera aggiungere l'intestazione di trace pertinente per il server e che le richieste di esecuzione preliminare verranno gestite in modo adeguato.
Configurazione di esempio con APM Java Agent
Vedere di seguito una configurazione di esempio che disabilita la logica predefinita nel riconoscimento dello stesso dominio, ma consente di specificare il pattern URL in cui è installato APM Java Agent utilizzando https://regexThatMatchesServersThatHaveServerAgent.*
. Le intestazioni di contesto dell'agente Java APM verranno utilizzate solo nelle chiamate Ajax effettuate agli URL corrispondenti a questo pattern. Tutti gli altri URL corrispondono al pattern '.*' e non verranno annotati poiché il contesto è vuoto.
document.apmrum.traceSupportingEndpoints = [
{ headers: [ 'APM'], hostPattern: 'https://regexThatMatchesServersThatHaveServerAgent.*'},
{ headers: [ ], hostPattern: '.*'} // block headers for everything else
];
Configurazione di esempio con agenti diversi
/* sample configuration for an app running on
* sample.oracle.com, by default 'APM' headers
* are added for ajax-calls to data.oracle.com
* (same domain) so no configuration needed in
* that scenario.
*/
document.apmrum.traceSupportingEndpoints = [
/* apm server agent running on api.oracledata.com servers */
{ hostPattern: 'https://api.oracledata.com', headers: [ 'APM']},
/* oracle functions uses B3 header for integration */
{ hostPattern: 'https://functions.oraclecloud.com', headers: [ 'B3-Multi']},
/* more complex configuration withregexp host and multiple header types combined */
{ hostPattern: 'https://*.extern.*.com', headers: ['W3C', 'B3-Multi']},
/* server has no agent therefore don't send headers */
{ hostPattern: 'https://info.oracle.com', headers: []},
]
Intestazioni propagazione contesto
La tabella riportata di seguito mostra i diversi tipi di intestazioni di propagazione del contesto supportati dall'agente del browser APM.
Nome | Intestazioni propagazione contesto | descrizione; |
---|---|---|
APM |
X-B3-TraceId X-B3-SpanId X-B3-Campionato VERSIONE X-ORACLE-APM-BA |
Agente Java APM installato per combinare le informazioni di trace lato server. |
B3 - Singolo | b3 | Singola intestazione b3 con informazioni di trace combinate in valore. |
B3-Multi |
X-B3-TraceId X-B3-SpanId X-B3-Campionato |
B3 intestazioni con valore distribuito su intestazioni separate. |
W3C | contagocce | Informazioni di trace-span combinate in una singola intestazione come specificato da W3C. |
UberId | Uber-Trace-Id | Intestazione uberId con contesto di trace combinato in valore singolo. |