Instrumentieren eines Web-App-Clients - AWS X-Ray

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

In derxray-cognito-Verzweigung nutzt Scorekeep Amazon Cognito, um Benutzern die Kontoerstellung und Anmeldung zum Abrufen ihrer Benutzerinformationen aus einem Amazon Cognito Cognito-Benutzerpool zu ermöglichen. Wenn ein Benutzer sich anmeldet, verwendet Scorekeep einen Amazon Cognito Cognito-Identitätenpool, um vorübergehend zu erhaltenAWSAnmeldeinformationen zur Verwendung mit demAWS SDK for JavaScriptaus.

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 Service-Klasse bietet Methoden zum Generieren der erforderlichen IDs, Erstellen von in Bearbeitung befindlichen Segmenten, Abschließen von Segmenten und Senden von Segmentdokumenten an die X-Ray-API.

Beispiel public/xray.js- Aufzeichnen und Hochladen von Segment

... 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 Client-Segment in dieselbe Ablaufverfolgung einzubeziehen wie das Segment, das die API generiert, muss die Web-App die Ablaufverfolgungs-ID und Segment-ID in eineAblaufverfolgungs-Header(X-Amzn-Trace-Id) das X-Ray-SDK lesen kann. Wenn die instrumentierte Java-Anwendung eine Anfrage mit diesem Header empfängt, verwendet das X-Ray-SDK SDK for Java dieselbe Ablaufverfolgungs-ID und macht das Segment aus dem Web-App-Client zum übergeordneten Element seines Segments.

Beispiel public/app/services.js— Aufzeichnung von Segmenten für Angular-Ressourcenaufrufe und Schreiben von Ablaufverfolgungs

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 daraus resultierende Service-Übersicht beinhaltet einen Knoten für den Web-App-Client.


      Service-Übersicht mit Knoten für den Scorekeep-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/).


      Ablaufverfolgungsliste mit Ablaufverfolgungen, die die Anfrage-URL aus dem Client-Segment zeigen.