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

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

문제 해결 AWS X-Ray

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

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

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

모든 CloudWatch 로그가 보이지 않아요

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

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

모든 서비스 맵 노드가 관련 로그 보기를 지원하는 것은 아닙니다. 다음 노드 유형에 대한 로그를 확인하십시오.

  • 람다 컨텍스트

  • Lambda 함수

  • API Gateway 스테이지

  • Amazon ECS 클러스터

  • 아마존 ECS 인스턴스

  • Amazon ECS 서비스

  • Amazon ECS 태스크

  • Amazon EKS 클러스터

  • 아마존 EKS 네임스페이스

  • 아마존 EKS 노드

  • 아마존 EKS 포드

  • 아마존 EKS 서비스

X-Ray 추적 맵에 모든 알람이 표시되지 않습니다.

X-Ray trace 맵에는 해당 노드와 관련된 경보가 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용 X-Ray SDK

오류: 스레드 “Thread-1"com.amazonaws.xray.exctions에서 예외가 발생했습니다. 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)이 잘못된 보안 인증 정보를 사용하고 있습니다.

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