

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

# 문제 해결 AWS X-Ray
<a name="xray-troubleshooting"></a>

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

**Topics**
+ [X-Ray 트레이스 맵 및 트레이스 세부 정보 페이지](#xray-console-troubleshooting)
+ [Java용 AWS X-Ray SDK](#troubleshooting-java)
+ [Node.js용 X-Ray SDK](#troubleshooting-nodejs)
+ [X-Ray 대몬(daemon)](#troubleshooting-daemon)

## X-Ray 트레이스 맵 및 트레이스 세부 정보 페이지
<a name="xray-console-troubleshooting"></a>

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

### CloudWatch 로그가 모두 표시되지 않음
<a name="xray-troubleshooting-Nologs"></a>

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 트레이스 맵에 모든 경보가 표시되지 않음
<a name="xray-troubleshooting-NoAlarms"></a>

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

트레이스 맵은 다음 로직을 사용하여 경보를 노드와 연결합니다.
+ 노드가 AWS 서비스를 나타내는 경우 해당 서비스와 연결된 네임스페이스가 있는 모든 경보가 노드와 연결됩니다. 예를 들어 `AWS::Kinesis` 유형의 노드는 CloudWatch 네임스페이스 `AWS/Kinesis`의 지표를 기반으로 하는 모든 경보와 연결됩니다.
+ 노드가 AWS 리소스를 나타내는 경우 해당 특정 리소스에 대한 경보가 연결됩니다. 예를 들어 이름이 “MyTable”인 `AWS::DynamoDB::Table` 유형의 노드는 네임스페이스 `AWS/DynamoDB`가 있는 지표를 기반으로 하며 `TableName` 차원이 `MyTable`로 설정된 모든 경보에 연결됩니다.
+ 노드가 이름 주위의 테두리가 파선으로 식별되는 알 수 없는 유형이면 해당 노드와 연결된 경보가 없습니다.

### 트레이스 맵에 일부 AWS 리소스가 표시되지 않음
<a name="xray-troubleshooting-MissingResources"></a>

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

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

### 트레이스 맵에 노드가 너무 많음
<a name="xray-troubleshooting-MapTooBig"></a>

X-Ray 그룹을 사용하여 맵을 여러 맵으로 분할합니다. 자세한 내용은 [그룹에 필터 표현식 사용](xray-console-filters.md#groups)을 참조하십시오.

## Java용 AWS X-Ray SDK
<a name="troubleshooting-java"></a>

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

이 오류는 X-Ray SDK가에 대한 발신 호출을 기록하려고 시도 AWS했지만 열린 세그먼트를 찾을 수 없음을 나타냅니다. 이는 다음과 같은 상황에서 발생할 수 있습니다.
+ **servlet 필터가 구성되지 않음** - X-Ray SDK는 `AWSXRayServletFilter`라는 필터를 사용하여 수신 요청에 대한 세그먼트를 생성합니다. 수신 요청을 계측하도록 [servlet 필터를 구성](xray-sdk-java-filters.md)합니다.
+ **servlet 코드 외부에서 계측된 클라이언트를 사용하는 경우** — 계측된 클라이언트를 사용하여 시작 코드 또는 수신 요청에 대한 응답으로 실행되지 않는 기타 코드에서 직접 호출을 수행하는 경우 세그먼트를 수동으로 만들어야 합니다. [시작 코드 구성](scorekeep-startup.md)의 예제를 참조하세요.
+ **작업자 스레드에서 계측된 클라이언트를 사용하는 경우** — 새 스레드를 생성하면 X-Ray 레코더가 열린 세그먼트에 대한 참조를 잃게 됩니다. [https://docs.aws.amazon.com/xray-sdk-for-java/latest/javadoc/com/amazonaws/xray/AWSXRayRecorder.html#getTraceEntity--](https://docs.aws.amazon.com/xray-sdk-for-java/latest/javadoc/com/amazonaws/xray/AWSXRayRecorder.html#getTraceEntity--) 및 [https://docs.aws.amazon.com/xray-sdk-for-java/latest/javadoc/com/amazonaws/xray/AWSXRayRecorder.html#setTraceEntity--](https://docs.aws.amazon.com/xray-sdk-for-java/latest/javadoc/com/amazonaws/xray/AWSXRayRecorder.html#setTraceEntity--) 메서드를 사용하여 현재 세그먼트 또는 하위 세그먼트([https://docs.aws.amazon.com/xray-sdk-for-java/latest/javadoc/com/amazonaws/xray/entities/Entity.html](https://docs.aws.amazon.com/xray-sdk-for-java/latest/javadoc/com/amazonaws/xray/entities/Entity.html))에 대한 참조를 가져와서 스레드 내부의 레코더로 다시 전달할 수 있습니다. 예제는 [작업자 스레드에서 구성된 클라이언트 사용](scorekeep-workerthreads.md) 섹션을 참조하세요.

## Node.js용 X-Ray SDK
<a name="troubleshooting-nodejs"></a>

**문제:** *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)
<a name="troubleshooting-daemon"></a>

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

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