翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
トラブルシューティング AWS X-Ray
このトピックでは、X-Ray、API、コンソール、または SDK を使用する際に発生する可能性のある一般的なエラーと問題を示します。ここに記載されていない問題が見つかった場合は、このページの [Feedback] ボタンを使用して報告することができます。
X-Ray トレースマップとトレースの詳細ページ
以下のセクションは、X-Ray トレースマップとトレースの詳細ページを使用して問題が発生した場合に役立ちます。
すべての CloudWatch ログが表示されない
X-Ray トレースマップとトレースの詳細ページに表示されるようにログを設定する方法は、サービスによって異なります。
-
API Gateway でログが有効になっている場合は、API Gateway のログが表示されます。
すべてのサービスマップノードが、関連するログの表示をサポートしているわけではありません。次のノードタイプのログを表示します。
Lambda コンテキスト
Lambda 関数
API Gateway ステージ
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 関数は 2 つのノードで表されます。1 つは Lambda コンテナ用、もう 1 つは関数用です。これは、Lambda 関数のコールドスタートの問題を特定するのに役立ちます。Lambda コンテナノードは、Lambda 関数ノードと同じ方法でアラームとダッシュボードに関連付けられます。
-
AWS::ApiGateway::Stage
-
AWS::SQS::Queue
-
AWS::SNS::Topic
トレースマップにノードが多すぎる
X-Ray グループを使用して、マップを複数のマップに分割します。詳細については、「グループでフィルター式を使用する」を参照してください。
X-Ray SDK for Java
エラー: Exception in thread "Thread-1" com.amazonaws.xray.exceptions.SegmentNotFoundException: Failed to begin subsegment named 'AmazonSNS ': segment cannot found.
このエラーは、X-Ray SDK が への発信呼び出しを記録しようとしたが AWS、オープンセグメントを見つけられなかったことを示します。これは次の場合に発生する可能性があります。
-
サーブレットフィルタが設定されていない X–Ray、 SDK は、 という名前のフィルターを使用して、着信リクエストのセグメントを作成します
AWSXRayServletFilter
。 着信リクエストを計測するためのサーブレットフィルターを設定します。 -
サーブレットコード以外の計測クライアントを使用しています 計測クライアントを使用して、スタートアップコードまたは着信リクエストに応答して実行されないその他のコードで呼び出しを行う場合は、セグメントを手動で作成する必要があります。例については、「スタートアップコードの作成」を参照してください。
-
ワーカースレッドで計測クライアントを使用しています 新しいスレッドを作成すると、X-Ray レコーダーはオープンセグメントへの参照を失います。
getTraceEntity
およびsetTraceEntity
メソッドを使用して、現在のセグメントまたはサブセグメント (Entity
) への参照を取得し、スレッド内のレコーダーに戻すことができます。 例については、「実装されたクライアントをワーカースレッドで使用する」を参照してください。
Node.jsに使われる X-Ray SDK
問題: 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 デーモン
問題: デーモンが間違った認証情報を使用する
デーモンは AWS SDK を使用して認証情報をロードします。認証情報を提供する複数の方法を使用する場合は、優先順位が最も高い方法が使用されます。詳細については、「デーモンを実行する」を参照してください。