Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Instrumentation d'un client d'application web
Dans la xray-cognito
Le pool d'identités est configuré pour que les utilisateurs connectés puissent écrire des données de suivi sur AWS X-Ray. L'application web utilise ces informations d'identification pour enregistrer l'ID de l'utilisateur connecté, le chemin du navigateur et la vue des appels du client vers l'API Scorekeep.
La plupart des opérations sont effectuées dans une classe de service nommée xray
. Cette classe de service fournit des méthodes permettant de générer les identifiants requis, de créer des segments en cours, de finaliser des segments et d'envoyer des documents de segment à l'API X-Ray.
Exemple public/xray.js
— Enregistrez et téléchargez des segments
...
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);
}
})
}
Ces méthodes sont appelées dans les fonctions d'en-tête et transformResponse
dans les services de ressource utilisés par l'application web pour appeler l'API Scorekeep. Pour inclure le segment client dans la même trace que le segment généré par l'API, l'application Web doit inclure l'ID de trace et l'ID de segment dans un en-tête de suivi (X-Amzn-Trace-Id
) que le SDK X-Ray peut lire. Lorsque l'application Java instrumentée reçoit une demande avec cet en-tête, le SDK X-Ray pour Java utilise le même identifiant de trace et fait du segment du client de l'application Web le parent de son segment.
Exemple public/app/services.js
— Enregistrement de segments pour les appels de ressources angulaires et écriture d'en-têtes de suivi
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 carte de trace obtenue inclut un nœud pour le client de l'application Web.
Les suivis qui contiennent des segments provenant de l'application web affichent l'URL que l'utilisateur voit dans le navigateur (chemins commençant par /#/
). Sans l'instrumentation du client, vous obtenez uniquement l'URL de la ressource d'API que l'application web appelle (chemins commençant par /api/
).