기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Node.js SDK 용 X-Ray를 사용하여 사용자 지정 서브세그먼트 생성
하위 세그먼트는 추적의 세그먼트를 확장하여 요청을 처리하기 위해 완료된 작업에 대한 세부 정보를 표시합니다. 계측 클라이언트와 통화를 할 때마다 X-Ray는 하위 세그먼트에서 생성된 정보를 SDK 기록합니다. 추가 하위 세그먼트를 생성하여 다른 하위 세그먼트를 그룹화하거나, 코드 섹션의 성능을 평가하거나, 주석 및 메타데이터를 기록할 수 있습니다.
사용자 지정 Express 하위 세그먼트
captureAsyncFunc
함수를 사용하여 다운스트림 서비스를 호출하는 기능에 대해 사용자 지정 하위 세그먼트를 생성할 수 있습니다.
예 app.js – 사용자 지정 하위 세그먼트 Express
var AWSXRay = require('aws-xray-sdk');
app.use(AWSXRay.express.openSegment('MyApp'
));
app.get('/', function (req, res) {
var host = 'api.example.com';
AWSXRay.captureAsyncFunc('send', function(subsegment)
{
sendRequest(host, function() {
console.log('rendering!');
res.render('index');
subsegment.close();
});
});
});
app.use(AWSXRay.express.closeSegment());
function sendRequest(host, cb) {
var options = {
host: host,
path: '/',
};
var callback = function(response) {
var str = '';
response.on('data', function (chunk) {
str += chunk;
});
response.on('end', function () {
cb();
});
}
http.request(options, callback).end();
};
이 예제에서 애플리케이션은 sendRequest
함수를 호출하기 위해 send
라는 사용자 지정 하위 세그먼트를 생성합니다. captureAsyncFunc
는 콜백 함수가 생성하는 비동기 호출이 완료되면 해당 콜백 함수 내에서 닫아야 하는 하위 세그먼트를 전달합니다.
동기식 기능에 대해서는 captureFunc
함수를 사용할 수 있습니다. 이 함수는 함수 블록이 실행을 마치는 즉시 자동으로 하위 세그먼트를 닫습니다.
세그먼트나 다른 하위 세그먼트 내에 하위 세그먼트를 만들면 X-Ray SDK for Node.js 에서 해당 하위 세그먼트에 대한 ID를 생성하고 시작 시간과 종료 시간을 기록합니다.
예 메타데이터가 포함된 하위 세그먼트
"subsegments": [{
"id": "6f1605cd8a07cb70",
"start_time": 1.480305974194E9,
"end_time": 1.4803059742E9,
"name": "Custom subsegment for UserModel.saveUser function",
"metadata": {
"debug": {
"test": "Metadata string from UserModel.saveUser"
}
},
사용자 지정 Lambda 하위 세그먼트
SDKLambda에서 실행 중인 것으로 감지되면 플레이스홀더 파사드 세그먼트를 자동으로 생성하도록 구성되어 있습니다. X-Ray Trace 맵에 단일 AWS::Lambda::Function
노드를 생성하는 기본 하위 세그먼트를 만들려면 파사드 세그먼트를 호출하고 용도를 변경하십시오. 추적 ID, 상위 ID 및 샘플링 결정을 공유할 때 새 ID를 사용하여 새 세그먼트를 수동으로 만들면 새 세그먼트를 보낼 수 있습니다.
예 app.js – 수동 사용자 지정 하위 세그먼트
const segment = AWSXRay.getSegment(); //returns the facade segment
const subsegment = segment.addNewSubsegment('subseg');
...
subsegment.close();
//the segment is closed by the SDK automatically