AWS X-Ray 문제 해결 - AWS X-Ray

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

AWS X-Ray 문제 해결

이 문서는 X-Ray API, 콘솔 또는 SDK를 사용할 때 발생할 수 있는 공통 오류 및 문제를 나열합니다. 여기에 나열되지 않은 문제를 발견하는 경우 이 페이지의 [Feedback] 버튼을 사용하여 해당 문제를 보고할 수 있습니다.

X-Ray 트레이스 맵 및 트레이스 세부 정보 페이지

다음 단원은 X-Ray 트레이스 맵 및 트레이스 세부 정보 페이지를 사용하는 데 문제가 있는 경우 도움이 될 수 있습니다.

CloudWatch 로그가 모두 표시되지 않음

X-Ray 트레이스 맵 및 트레이스 세부 정보 페이지에 표시되도록 로그를 구성하는 방법은 서비스에 따라 다릅니다.

  • API Gateway에 로깅이 활성화되어 있다면 API Gateway 로그가 나타납니다.

모든 서비스 맵 노드에서 관련 로그 보기를 지원하는 것은 아닙니다. 다음 노드 유형에 대한 로그를 볼 수 있습니다.

  • Lambda 컨텍스트

  • Lambda 함수

  • API 게이트웨이 스테이지

  • Amazon ECS 클러스터

  • Amazon ECS 인스턴스

  • Amazon ECS 서비스

  • Amazon ECS 태스크

  • Amazon EKS 클러스터

  • Amazon EKS 네임스페이스

  • Amazon EKS 노드

  • Amazon EKS 포드

  • Amazon EKS 서비스

X-Ray 트레이스 맵에 모든 경보가 표시되지 않음

X-Ray 트레이스 맵에는 노드와 연관된 경보가 ALARM 상태인 경우에만 해당 노드의 경보 아이콘이 표시됩니다.

트레이스 맵은 다음 로직을 사용하여 경보를 노드와 연결합니다.

  • 노드가 AWS 서비스를 나타내는 경우 해당 서비스와 연결된 네임스페이스를 가진 모든 경보는 노드와 연결됩니다. 예를 들어 AWS::Kinesis 유형의 노드는 CloudWatch 네임스페이스 AWS/Kinesis의 지표를 기반으로 하는 모든 경보와 연결됩니다.

  • 노드가 AWS 리소스를 나타내는 경우 해당 특정 리소스에 대한 경보가 연결됩니다. 예를 들어 이름이 “MyTable”인 AWS::DynamoDB::Table 유형의 노드는 네임스페이스 AWS/DynamoDB가 있는 지표를 기반으로 하며 TableName 차원이 MyTable로 설정된 모든 경보에 연결됩니다.

  • 노드가 이름 주위의 테두리가 파선으로 식별되는 알 수 없는 유형이면 해당 노드와 연결된 경보가 없습니다.

트레이스 맵에 일부 AWS 리소스가 표시되지 않음

모든 AWS 리소스가 전용 노드로 표시되는 것은 아닙니다. 일부 AWS 서비스는 서비스에 대한 모든 요청의 단일 노드로 표시됩니다. 다음 리소스 유형은 리소스별 노드와 함께 표시됩니다.

  • AWS::DynamoDB::Table

  • AWS::Lambda::Function

    Lambda 함수는 두 개의 노드로 표시되는데, 하나는 Lambda 컨테이너용 노드이고 다른 하나는 함수용 노드입니다. 이렇게 하면 Lambda 함수의 콜드 스타트 ​​문제를 식별하는 데 도움이 됩니다. Lambda 컨테이너 노드는 Lambda 함수 노드와 동일한 방식으로 경보 및 대시보드에 연결됩니다.

  • AWS::ApiGateway::Stage

  • AWS::SQS::Queue

  • AWS::SNS::Topic

트레이스 맵에 노드가 너무 많음

X-Ray 그룹을 사용하여 맵을 여러 맵으로 분할합니다. 자세한 내용은 그룹에 필터 표현식 사용을 참조하십시오.

Java용 AWS X-Ray SDK

오류: 스레드 “Thread-1"에서 예외가 발생했습니다. amazonaws.xray.Exceptions.segmentNotFoundException: 'AmazonSNS'라는 이름의 하위 세그먼트를 시작하지 못했습니다. 세그먼트를 찾을 수 없습니다.

이 오류는 X-Ray SDK가 발신 직접 호출을 AWS에 기록하려고 시도했지만 열려 있는 세그먼트를 찾을 수 없음을 나타냅니다. 이는 다음과 같은 상황에서 발생할 수 있습니다.

  • servlet 필터가 구성되지 않음 - X-Ray SDK는 AWSXRayServletFilter라는 필터를 사용하여 수신 요청에 대한 세그먼트를 생성합니다. 수신 요청을 계측하도록 servlet 필터를 구성합니다.

  • servlet 코드 외부에서 계측된 클라이언트를 사용하는 경우 — 계측된 클라이언트를 사용하여 시작 코드 또는 수신 요청에 대한 응답으로 실행되지 않는 기타 코드에서 직접 호출을 수행하는 경우 세그먼트를 수동으로 만들어야 합니다. 시작 코드 구성의 예제를 참조하세요.

  • 작업자 스레드에서 계측된 클라이언트를 사용하는 경우 — 새 스레드를 생성하면 X-Ray 레코더가 열린 세그먼트에 대한 참조를 잃게 됩니다. getTraceEntitysetTraceEntity 메서드를 사용하여 현재 세그먼트 또는 하위 세그먼트 (Entity) 에 대한 참조를 가져와서 스레드 내부의 레코더로 다시 전달할 수 있습니다. 예제는 작업자 스레드에서 구성된 클라이언트 사용 단원을 참조하세요.

Node.js용 X-Ray SDK

문제: CLS가 Sequelize에서 작동하지 않습니다.

cls 메서드를 사용하여 Node.js용 X-Ray SDK 네임스페이스를 Sequelize에 전달합니다.

var AWSXRay = require('aws-xray-sdk'); const Sequelize = require('sequelize'); Sequelize.cls = AWSXRay.getNamespace(); const sequelize = new Sequelize(...);

문제: CLS가 블루버드에서 작동하지 않습니다.

cls-bluebird을 사용하여 블루버드가 CLS와 함께 작동하도록 합니다.

var AWSXRay = require('aws-xray-sdk'); var Promise = require('bluebird'); var clsBluebird = require('cls-bluebird'); clsBluebird(AWSXRay.getNamespace());

X-Ray 대몬(daemon)

문제: 대몬(daemon)이 잘못된 보안 인증 정보를 사용하고 있습니다.

대몬(daemon)은 AWS SDK를 사용하여 보안 인증 정보를 로드합니다. 여러 가지 보안 인증 정보 제공 방법을 사용하는 경우 우선 순위가 가장 높은 방법이 사용됩니다. 자세한 정보는 데몬 실행을 참조하세요.