Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Instrumentación de un cliente de aplicación web
En la ramificación xray-cognito
El grupo de identidades está configurado para permitir a los usuarios que han iniciado sesión escribir datos de rastreos en AWS X-Ray. La aplicación web utiliza estas credenciales para registrar el ID del usuario que ha iniciado sesión, la ruta del navegador y la vista del cliente de llamadas a la API Scorekeep.
La mayor parte del trabajo se realiza en una clase de servicio denominada xray
. Este clase de servicio ofrece métodos para generar los identificadores requeridos, crear segmentos en curso, finalizar segmentos y enviar documentos de segmento a la API de X-Ray.
ejemplo public/xray.js
: registrar y cargar segmentos
...
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);
}
})
}
Estos métodos se llaman en el encabezado y funciones transformResponse
en los servicios de recursos que la aplicación web utiliza para llamar a la API de Scorekeep. Para incluir el segmento de cliente en el mismo rastreo que el segmento que genera la API, la aplicación web debe incluir el ID de rastro y el ID de segmento en un encabezado de seguimiento (X-Amzn-Trace-Id
) que el SDK de X-Ray puede leer. Cuando la aplicación Java instrumentada recibe una solicitud con este encabezado, el SDK de X-Ray para Java utiliza el mismo ID de rastro y hace que el segmento del cliente de la aplicación web sea el principal de su segmento.
ejemplo public/app/services.js
: registro de segmentos para llamadas de recursos de Angular y escritura de encabezados de rastreo
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);
},
},
...
El mapa de rastreo resultante incluye un nodo para el cliente de la aplicación web.
![Rastree el mapa con el nodo para el cliente Scorekeep.](images/scorekeep-servicemap-client.png)
Los rastreos que incluyen segmentos desde la aplicación web muestran la dirección URL que el usuario ve en el navegador (rutas que empiezan por /#/
). Sin la instrumentación de cliente, solo obtiene la dirección URL del recurso de la API que la aplicación web llama (rutas que empiezan por /api/
).
![Lista de rastreos con rastreos que muestran la URL de solicitud desde el segmento del cliente.](images/scorekeep-traces-client.png)