AWS X-Ray 활성화
선행 조건: AWS 통합 설치.
- AWS/Datadog 역할에 대한 정책 문서에 다음 권한이 있는지 확인하세요:
xray:BatchGetTraces,
xray:GetTraceSummaries
전체 트레이스를 반환하는 데 `BatchGetTraces` 권한이 사용됩니다. `GetTraceSummaries` 권한은 최근 트레이스 요약 목록을 가져오는 데 사용됩니다.
Datadog 내에서 X-Ray 통합을 활성화합니다.
고객 마스터 키를 사용하여 트레이스를 암호화하는 경우 리소스가 X-Ray에 사용되는 고객 마스터 키인 정책에 kms:Decrypt
메서드를 추가하세요.
참고: AWS X-Ray 통합을 활성화하면 소비되는 인덱싱된 스팬의 양이 늘어나 청구 금액도 늘어날 수 있습니다.
함수에 대해 AWS X-Ray 활성화
AWS X-Ray 통합을 최대한 활용하려면 다음을 수행하세요:
- Serverless Framework 플러그인을 사용하거나 수동으로 Lambda 함수 및 API 게이트웨이에서 활성화합니다.
- Lambda 함수에 추적 라이브러리를 설치합니다.
[권장] Datadog Serverless Framework 플러그인
Datadog Serverless Framework 플러그인은 Lambda 함수 및 API 게이트웨이 인스턴스에 대해 X-Ray를 자동으로 활성화합니다. 또한 플러그인은 모든 Node.js 및 Python 함수에 Datadog Lambda Layer를 자동으로 추가합니다.
Serverless Framework 플러그인을 시작하고 관련 문서를 참조하세요.
마지막으로 Lambda 함수에 X-Ray 클라이언트 라이브러리를 설치하고 가져옵니다.
수동 설정
Serverless Framework를 사용하여 서버리스 애플리케이션을 배포하지 않는 경우 수동 설정을 위해 다음 지침을 따르세요.
- 계측하려는 AWS 콘솔에서 Lambda 함수로 이동합니다. “Debugging and error handling” 섹션에서 Enable active tracing 확인란을 선택합니다. 그러면 해당 함수에 대한 X-Ray가 작동합니다.
- API Gateway 콘솔로 이동합니다. API를 선택한 후 단계를 선택합니다.
- Logs/Tracing 탭에서 Enable X-Ray Tracing을 선택합니다.
- 이러한 변경 사항을 적용하려면 왼쪽 탐색 패널에서 Resources로 이동하여 Actions를 선택하고 Deploy API를 클릭합니다.
참고: Datadog Lambda Layer 및 클라이언트 라이브러리에는 X-Ray SDK가 종속성으로 포함되어 있으므로 프로젝트에 이를 명시적으로 설치할 필요가 없습니다.
마지막으로 Lambda 함수에 X-Ray 클라이언트 라이브러리를 설치하고 가져옵니다.
X-Ray 클라이언트 라이브러리 설치
X-Ray 클라이언트 라이브러리는 API에 대한 HTTP 요청과 DynamoDB, S3, MySQL, PostgreSQL(자체 호스팅, Amazon RDS 및 Amazon Aurora), SQS, SNS에 대한 호출과 관련된 인사이트를 제공합니다.
라이브러리를 설치하고 이를 Lambda 프로젝트로 가져온 다음 계측하려는 서비스를 패치합니다.
X-Ray 추적 라이브러리 설치
npm install aws-xray-sdk
# Yarn 사용자의 경우
yarn add aws-xray-sdk
AWS SDK 계측 방법:
var AWSXRay = require('aws-xray-sdk-core');
var AWS = AWSXRay.captureAWS(require('aws-sdk'));
모든 다운스트림 HTTP 호출 계측 방법:
var AWSXRay = require('aws-xray-sdk');
AWSXRay.captureHTTPsGlobal(require('http'));
var http = require('http');
PostgreSQL 쿼리 계측 방법:
var AWSXRay = require('aws-xray-sdk');
var pg = AWSXRay.capturePostgres(require('pg'));
var client = new pg.Client();
MySQL 쿼리 계측 방법:
var AWSXRay = require('aws-xray-sdk');
var mysql = AWSXRay.captureMySQL(require('mysql'));
//...
var connection = mysql.createConnection(config);
추가 설정, 하위 세그먼트 생성 및 주석 기록에 대해서는 X-Ray Node.js 문서를 참조하세요.
X-Ray 추적 라이브러리 설치
기본적으로 모든 라이브러리를 패치하려면 Lambda 핸들러가 포함된 파일에 다음을 추가합니다.
from aws_xray_sdk.core import xray_recorder
from aws_xray_sdk.core import patch_all
patch_all()
aiohttp
추적에는 특정 계측이 필요합니다.
추가 설정, 하위 세그먼트 생성 및 주석 기록에 대해서는 X-Ray Python 문서를 참조하세요.