Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Instrumentieren eines Web-App-Clients
Anmerkung
End-of-support Hinweis — Am 25. Februar 2027 wird AWS X-Ray die Unterstützung für AWS X-Ray SDKs und Daemon einstellen. Nach dem 25. Februar 2027 werden Sie keine Updates oder Releases mehr erhalten. Weitere Informationen zum Zeitplan für den Support finden Sie unterZeitplan für das Ende des Supports für X-Ray SDK und Daemon. Wir empfehlen die Migration zu OpenTelemetry. Weitere Informationen zur Migration zu OpenTelemetry finden Sie unter Migration von X-Ray-Instrumentierung zu OpenTelemetry Instrumentierung.
In der xray-cognito
Der Identitätenpool ist so konfiguriert, dass angemeldete Benutzer Ablaufverfolgungsdaten in AWS X-Ray schreiben können. Die Web-App nutzt diese Anmeldeinformationen, um die Benutzer-ID des angemeldeten Benutzers, den Browserpfad und die Client-Ansicht von Aufrufen der Scorekeep-API aufzuzeichnen.
Der Großteil der Vorgänge wird in einer Service-Klasse mit dem Namen xray
ausgeführt. Diese Serviceklasse bietet Methoden zum Generieren der erforderlichen Identifikatoren, zum Erstellen von Segmenten in Bearbeitung, zum Finalisieren von Segmenten und zum Senden von Segmentdokumenten an die X-Ray-API.
Beispiel public/xray.js
— Segmente aufzeichnen und hochladen
...
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);
}
})
}
Diese Methoden werden im Header und in transformResponse
-Funktionen in den Ressourcen-Services aufgerufen, die die Web-App zum Aufrufen der Scorekeep-API verwendet. Um das Clientsegment in denselben Trace aufzunehmen wie das von der API generierte Segment, muss die Web-App die Trace-ID und die Segment-ID in einen Tracing-Header (X-Amzn-Trace-Id
) aufnehmen, den das X-Ray-SDK lesen kann. Wenn die instrumentierte Java-Anwendung eine Anfrage mit diesem Header empfängt, verwendet das X-Ray SDK for Java dieselbe Trace-ID und macht das Segment vom Web-App-Client zum übergeordneten Segment.
Beispiel public/app/services.js
— Aufzeichnen von Segmenten für Angular Resource Calls und Schreiben von Tracing-Headern
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);
},
},
...
Die resultierende Trace-Map enthält einen Knoten für den Web-App-Client.

Ablaufverfolgungen, die Segmente aus der Web-App einschließen, zeigen die URL an, die der Benutzer im Browser sieht (Pfad beginnend mit /#/
). Ohne Client-Instrumentierung erhalten Sie nur die URL der API-Ressource, die die Web-App aufruft (Pfade beginnend mit /api/
).
