檢測 Web 應用程式用戶端 - AWS X-Ray

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

檢測 Web 應用程式用戶端

xray-cognito分支機構中,Scorekeep 使用 Amazon Cognito 讓使用者能夠建立帳戶並使用該帳戶登入,以便從 Amazon Cognito 使用者集區擷取其使用者資訊。當使用者登入時,Scorekeep 會使用 Amazon Cognito 身分集區取得臨時 AWS 登入資料,以便與. AWS SDK for JavaScript

Identity Pool 是設定為可讓登入的使用者將追蹤資料寫入 AWS X-Ray。Web 應用程式會使用這些登入資料來記錄登入使用者的 ID、瀏覽器路徑和用戶端對 Scorekeep API 的呼叫檢視。

大部分工作都會在名稱為 xray 的服務類別中完成。此服務類別提供產生必要識別碼、建立進行中區段、完成區段,以及將區段文件傳送至 X-Ray API 的方法。

範例 public/xray.js— 記錄和上傳細分
... 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); } }) }

您可在資源服務的標頭和 transformResponse 函數中呼叫這些方法,而 Web 應用程式會使用這些資源服務來呼叫 Scorekeep API。若要將用戶端區段包含在與 API 產生的區段相同的追蹤中,Web 應用程式必須在 X-Ray SDK 可讀取的追蹤標頭 (X-Amzn-Trace-Id) 中包含追蹤 ID 和區段 ID。當檢測到的 Java 應用程式收到含有此標頭的要求時,Java 的 X-Ray SDK 會使用相同的追蹤識別碼,並使 Web 應用程式用戶端的區段成為其區段的父項。

範例 public/app/services.js— 記錄角度資源調用的段和寫入跟踪標題
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); }, }, ...

產生的追蹤對應包含 Web 應用程式用戶端的節點。

跟踪映射與節點的記分客戶端。

如果追蹤包括 Web 應用程式的區段,即會顯示使用者在瀏覽器中看到的 URL (路徑開頭為 /#/)。未使用用戶端檢測時,您只會取得 Web 應用程式呼叫之 API 資源的 URL (路徑開頭為 /api/)。

追蹤清單,其中含有的追蹤顯示來自用戶端區段的請求 URL。