Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Analisi di un client di app Web
Nella xray-cognito
Il pool di identità viene configurato per garantire agli utenti che accedono l'accesso in scrittura ai dati di tracciamento verso AWS X-Ray. L'applicazione web utilizza queste credenziali per registrare l'ID utente dell'utente cha ha eseguito l'accesso, il percorso del browser e la vista del client delle chiamate all'API di Scorekeep.
La maggior parte del lavoro è effettuato in una classe denominata xray
. Questa classe di servizio fornisce metodi per generare gli identificatori richiesti, creare segmenti in corso, finalizzare segmenti e inviare documenti di segmento all'API X-Ray.
Esempio public/xray.js
— Registrazione e caricamento di segmenti
...
service.beginSegment
= function() {
var segment = {};
var traceId = '1-' + service.getHexTime() + '-' + service.getHexId(24);
var id = service.getHexId(16);
var startTime = service.getEpochTime();
segment.trace_id = traceId;
segment.id = id;
segment.start_time = startTime;
segment.name = 'Scorekeep-client';
segment.in_progress = true;
segment.user = sessionStorage['userid'];
segment.http = {
request: {
url: window.location.href
}
};
var documents = [];
documents[0] = JSON.stringify(segment);
service.putDocuments(documents);
return segment;
}
service.endSegment
= function(segment) {
var endTime = service.getEpochTime();
segment.end_time = endTime;
segment.in_progress = false;
var documents = [];
documents[0] = JSON.stringify(segment);
service.putDocuments(documents);
}
service.putDocuments
= function(documents) {
var xray = new AWS.XRay();
var params = {
TraceSegmentDocuments: documents
};
xray.putTraceSegments(params, function(err, data) {
if (err) {
console.log(err, err.stack);
} else {
console.log(data);
}
})
}
Questi metodi sono chiamati nell'intestazione e nelle funzioni transformResponse
nei servizi della risorsa che l'app web Scorekeep utilizza per chiamare l'API. Per includere il segmento client nella stessa traccia del segmento generato dall'API, l'app Web deve includere l'ID di traccia e l'ID del segmento in un'intestazione di tracciamento (X-Amzn-Trace-Id
) leggibile dall'SDK X-Ray. Quando l'applicazione Java con strumentazione riceve una richiesta con questa intestazione, l'X-Ray SDK for Java utilizza lo stesso ID di traccia e rende il segmento del client dell'app Web il principale del segmento.
Esempio public/app/services.js
— Registrazione di segmenti per chiamate di risorse angolari e scrittura di intestazioni di tracciamento
var module = angular.module('scorekeep');
module.factory('SessionService', function($resource, api, XRay) {
return $resource(api + 'session/:id', { id: '@_id' }, {
segment: {},
get: {
method: 'GET',
headers: {
'X-Amzn-Trace-Id
': function(config) {
segment = XRay.beginSegment();
return XRay.getTraceHeader(segment);
}
},
transformResponse: function(data) {
XRay.endSegment(segment)
;
return angular.fromJson(data);
},
},
...
La mappa di traccia risultante include un nodo per il client dell'app Web.

I tracciamenti che includono segmenti dall'app web mostrano l'URL che l'utente visualizza all'interno del browser (percorso che inizia con /#/
). Senza l'analisi del client, ricevi solo l'URL dell'API della risorsa che l'app web chiama (percorsi che iniziano con /api/
).
