

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# トラブルシューティング AWS X-Ray
<a name="xray-troubleshooting"></a>

このトピックでは、X-Ray、API、コンソール、または SDK を使用する際に発生する可能性のある一般的なエラーと問題を示します。ここに記載されていない問題が見つかった場合は、このページの [**Feedback**] ボタンを使用して報告することができます。

**Topics**
+ [X-Ray トレースマップおよびトレース詳細ページ](#xray-console-troubleshooting)
+ [X-Ray SDK for Java](#troubleshooting-java)
+ [Node.jsに使われる X-Ray SDK](#troubleshooting-nodejs)
+ [X-Ray デーモン](#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 function
+ API Gateway のステージ
+ 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>

あるノードに関連付けられたアラームが ALARM 状態にある場合、X-Ray ではそのノードの警告アイコンだけが表示されます。

トレースマップでは、次のロジックを使用してアラームがノードに関連付けられます。
+ ノードが AWS サービスを表す場合、そのサービスに関連付けられた名前空間を持つすべてのアラームがノードに関連付けられます。例えば、タイプ `AWS::Kinesis` のノードは、CloudWatch 名前空間 `AWS/Kinesis` のメトリクスに基づくすべてのアラームにリンクされています。
+ ノードが AWS リソースを表す場合、その特定のリソースのアラームがリンクされます。例えば、名前が「MyTable」のタイプ `AWS::DynamoDB::Table` のノードは、名前空間の `AWS/DynamoDB` メトリクスに基づいており、`TableName` ディメンションが `MyTable` に設定されているすべてのアラームにリンクされます。
+ ノードのタイプが不明で、名前の周囲に破線で囲まれている場合、そのノードにはアラームが関連付けられていません。

### トレースマップに一部の AWS リソースが表示されない
<a name="xray-troubleshooting-MissingResources"></a>

すべての AWS リソースが専用ノードで表されるわけではありません。一部の AWS サービスは、サービスへのすべてのリクエストに対して 1 つのノードで表されます。次のリソースタイプは、リソースごとのノードとともに表示されます。
+ `AWS::DynamoDB::Table`
+ `AWS::Lambda::Function`

  Lambda 関数は 2 つのノードで表されます - 1 つは Lambda コンテナ用で、もう 1 つは関数用です。これは、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)」を参照してください。

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

** エラー: ***"Thread-1" com.amazonaws.xray.exceptions.SegmentNotFoundException スレッドの例外: 'AmazonSNS' という名前のサブセグメントの開始に失敗しました: セグメントが見つかりません。*

このエラーは、X-Ray SDK が への発信通話を記録しようとしたが AWS、開いているセグメントが見つからなかったことを示します。これは次の場合に発生する可能性があります。
+ **サーブレットフィルタが設定されていない** X–Ray、 SDK は、 という名前のフィルターを使用して、着信リクエストのセグメントを作成します`AWSXRayServletFilter`｡ 着信リクエストを計測するための[サーブレットフィルターを設定](xray-sdk-java-filters.md)します｡
+ **サーブレットコード以外の計測クライアントを使用しています 計測クライアントを使用して、**スタートアップコードまたは着信リクエストに応答して実行されないその他のコードで呼び出しを行う場合は、セグメントを手動で作成する必要があります。例については、「[スタートアップコードの作成](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>

** 問題:** *Sequelize で CLS が機能しない*

`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(...);
```

** 問題:** *Bluebird で CLS が機能しない*

`cls-bluebird` を使用して、Bluebird が CLS で動作するようにします。

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

## X-Ray デーモン
<a name="troubleshooting-daemon"></a>

**問題:** *デーモンが間違った認証情報を使用する*

デーモンは AWS SDK を使用して認証情報をロードします。認証情報を提供する複数の方法を使用する場合は、優先順位が最も高い方法が使用されます。詳細については「[デーモンを実行する](xray-daemon.md#xray-daemon-running)」を参照してください。