トラブルシューティング 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 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 リソースを表す場合、その特定のリソースのアラームがリンクされます。例えば、MyTableAWS::DynamoDB::Table「」という名前のタイプ のノードは、 名前空間のメトリクスに基づいており、AWS/DynamoDBTableNameディメンションが に設定されているすべてのアラームにリンクされます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 を使用して認証情報をロードします。認証情報を提供する複数の方法を使用する場合は、優先順位が最も高い方法が使用されます。詳細については、「デーモンを実行する」を参照してください。