AWS Lambda와 함께 AWS X-Ray 사용 - AWS Lambda

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

AWS Lambda와 함께 AWS X-Ray 사용

AWS X-Ray를 사용하여 애플리케이션의 구성 요소를 시각화하고, 성능 병목 현상을 식별하고, 오류가 발생한 요청을 문제 해결할 수 있습니다. Lambda 함수는 추적 데이터를 X-Ray로 보내고, X-Ray는 데이터를 처리하여 서비스 맵과 검색 가능한 추적 요약을 생성합니다.

함수를 호출하는 서비스에서 X-Ray 추적을 활성화한 경우 Lambda는 자동으로 추적을 X-Ray로 보냅니다. Amazon API Gateway와 같은 업스트림 서비스 또는 X-Ray SDK로 계측되는 Amazon EC2에서 호스팅되는 애플리케이션은 들어오는 요청을 샘플링하고 Lambda에게 추적 전송 여부를 지시하는 추적 헤더를 추가합니다. Amazon SQS와 같은 업스트림 메시지 생산자의 추적은 다운스트림 Lambda 함수의 추적에 자동으로 연결되어 전체 애플리케이션을 볼 수 있습니다. end-to-end 자세한 내용은 AWS X-Ray 개발자 가이드에서 이벤트 중심 애플리케이션 추적을 참조하세요.

참고

X-Ray 트레이스는 현재 Amazon Managed Streaming for Apache Kafka(Amazon MSK), 자체 관리형 Apache Kafka, ActiveMQ 및 RabbitMQ를 사용하는 Amazon MQ 또는 Amazon DocumentDB 이벤트 소스 매핑을 사용하는 Lambda 함수에 대해 지원되지 않습니다.

콘솔을 사용하여 Lambda 함수에 대한 활성 추적을 전환하려면 다음 단계를 따르십시오.

활성 추적 켜기
  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 함수를 선택합니다.

  3. 구성(Configuration)을 선택한 다음 모니터링 및 운영 도구(Monitoring and operations tools)를 선택합니다.

  4. 편집을 선택합니다.

  5. X-Ray에서 활성 추적을 켭니다.

  6. 저장을 선택합니다.

요금

X-Ray 추적을 AWS 프리 티어의 일부로서 특정 한도까지 매월 무료로 사용할 수 있습니다. 해당 한도를 초과하면 추적 저장 및 검색에 대한 X-Ray 요금이 부과됩니다. 자세한 내용은 AWS X-Ray 요금을 참조하십시오.

함수에 추적 데이터를 X-Ray로 업로드할 권한이 있어야 합니다. Lambda 콘솔에서 추적을 활성화하면 Lambda가 필요한 권한을 함수의 실행 역할에 추가합니다. 그렇지 않으면 AWSXRayDaemonWriteAccess정책을 실행 역할에 추가하십시오.

X-Ray는 애플리케이션에 대한 모든 요청을 추적하지 않습니다. X-Ray는 모든 요청의 대표 샘플을 여전히 제공하면서 추적이 효율적으로 수행되도록 샘플링 알고리즘을 적용합니다. 샘플링 요율은 초당 요청이 1개이며 추가 요청의 5퍼센트입니다.

참고

함수에 대해 X-Ray 샘플링 요율을 구성할 수 없습니다.

X-Ray에서 추적은 하나 이상의 서비스에서 처리되는 요청에 대한 정보를 기록합니다. 서비스는 하위 세그먼트의 계층을 포함하는 세그먼트를 기록합니다. Lambda는 호출 요청을 처리하는 Lambda 서비스의 세그먼트와 함수에 의해 수행된 작업에 대한 세그먼트를 기록합니다. 함수 세그먼트는 Initialization, Invocation, Restore(람다 SnapStart만 해당) 및 Overhead의 하위 세그먼트와 함께 제공됩니다. 자세한 내용은 Lambda 실행 환경 수명 주기를 참조하세요.

참고

X-Ray는 Lambda 함수에서 처리되지 않은 예외를 Error 상태로 취급합니다. X-Ray는 Lambda에 내부 서버 오류가 발생한 경우에만 Fault 상태를 기록합니다. 자세한 내용은 X-Ray 개발자 가이드에서 오류, 결함 및 예외를 참조하세요.

Initialization 하위 세그먼트는 Lambda 실행 환경 수명 주기의 초기화 단계를 나타냅니다. 이 단계 중에 Lambda는 사용자가 구성한 리소스로 실행 환경을 만들거나 고정 해제하고, 함수 코드와 모든 계층을 다운로드하고, 익스텐션을 초기화하고, 런타임을 초기화하고, 함수의 초기화 코드를 실행합니다.

Invocation 하위 세그먼트는 Lambda가 함수 핸들러를 호출하는 호출 단계를 나타냅니다. 이것은 런타임 및 익스텐션 등록으로 시작되며 런타임에서 응답을 보낼 준비가 되면 끝납니다.

(람다 SnapStart만 해당) Restore 하위 세그먼트는 Lambda가 스냅샷을 복원하고, 런타임(JVM)을 로드하고, afterRestore 런타임 후크를 실행하는 데 걸리는 시간을 보여줍니다. 스냅샷 복원 프로세스에는 microVM 외부 작업에 소요되는 시간이 포함될 수 있습니다. 이 시간은 Restore 하위 세그먼트에서 보고됩니다. 스냅샷을 복원하기 위해 microVM 외부에서 소요된 시간에 대한 요금은 부과되지 않습니다.

Overhead 하위 세그먼트는 런타임이 응답을 보내는 시간과 다음 호출에 대한 신호 사이에 발생하는 위상을 나타냅니다. 이 시간 동안 런타임은 호출과 관련된 모든 태스크를 완료하고 샌드박스를 고정할 준비를 합니다.

참고

경우에 따라 X-Ray 트레이스에서 함수 초기화 단계와 호출 단계 사이의 간격이 크게 나타날 수 있습니다. 프로비저닝된 동시성을 사용하는 함수의 경우 이는 Lambda가 호출 전에 함수 인스턴스를 초기화하기 때문입니다. 예약되지 않은(온디맨드) 동시성을 사용하는 함수의 경우 호출이 없더라도 Lambda가 함수 인스턴스를 사전에 초기화할 수 있습니다. 시각적으로 이 두 경우 모두 초기화 단계와 호출 단계 사이의 시간 차이로 표시됩니다.

중요

Lambda에서는 X-Ray SDK를 사용하여 Invocation 하위 세그먼트를 다운스트림 호출, 주석 및 메타데이터에 대한 추가 하위 세그먼트로 확장할 수 있습니다. 함수 세그먼트에 직접 액세스하거나 핸들러 호출 범위 외부에서 수행된 작업을 기록할 수 없습니다.

Lambda에서의 추적에 대한 언어별 소개는 다음 주제를 참조하세요.

활성 계측을 지원하는 서비스의 전체 목록은 AWS X-Ray 개발자 안내서에서 지원되는 AWS 서비스를 참조하세요.

실행 역할 권한

X-Ray에 추적 데이터를 보내려면 Lambda에 다음 권한이 필요합니다. 이러한 권한을 함수의 실행 역할에 추가합니다.

이러한 권한은 AWSXRayDaemonWriteAccess관리형 정책에 포함됩니다.

AWS X-Ray 데몬

X-Ray API로 추적 데이터를 직접 보내는 대신 X-Ray SDK는 데몬 프로세스를 사용합니다. AWS X-Ray 데몬은 Lambda 환경에서 실행되고 세그먼트 및 하위 세그먼트를 포함하는 UDP 트래픽을 수신하는 애플리케이션입니다. 수신 데이터를 버퍼링하고 배치로 X-Ray에 작성하여 호출을 추적하는 데 필요한 처리 및 메모리 오버헤드를 줄입니다.

Lambda 런타임을 사용하면 데몬이 함수에 구성된 메모리의 최대 3% 또는 16MB 중 더 큰 메모리를 사용할 수 있습니다. 호출 중에 함수의 메모리가 부족하면 런타임은 먼저 데몬 프로세스를 종료하여 메모리를 확보합니다.

데몬 프로세스는 Lambda에 의해 완전히 관리되며 사용자가 구성할 수 없습니다. 함수 호출에 의해 생성된 모든 세그먼트는 Lambda 함수와 동일한 계정에 기록됩니다. 데몬은 다른 계정으로 리디렉션하도록 구성할 수 없습니다.

자세한 내용은 X-Ray 개발자 안내서의 X-Ray 데몬을 참조하세요.

Lambda API로 활성 추적 활성화

AWS CLI 또는 AWS SDK를 사용하여 추적 구성을 관리하려면 다음 API 작업을 사용합니다.

다음 예제 AWS CLI 명령은 my-function이라는 함수에 대한 활성 추적을 사용 설정합니다.

aws lambda update-function-configuration --function-name my-function \ --tracing-config Mode=Active

추적 모드는 함수 버전을 게시할 때 버전별 구성의 일부입니다. 게시된 버전에 대한 추적 모드는 변경할 수 없습니다.

AWS CloudFormation으로 활성 추적 활성화

AWS CloudFormation 템플릿에서 AWS::Lambda::Function 리소스에 대한 추적을 활성화하려면 TracingConfig 속성을 사용합니다.

function-inline.yml – 추적 구성
Resources: function: Type: AWS::Lambda::Function Properties: TracingConfig: Mode: Active ...

AWS Serverless Application Model(AWS SAM) AWS::Serverless::Function 리소스의 경우 Tracing 속성을 사용합니다.

template.yml – 추적 구성
Resources: function: Type: AWS::Serverless::Function Properties: Tracing: Active ...