本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
檢測 Web 應用程式用戶端
在xray-cognito
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/
)。
