Node.js SDK 용 X-Ray를 사용하여 사용자 지정 서브세그먼트 생성 - AWS X-Ray

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

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