の Step Functions リクエストデータをトレースする AWS X-Ray - AWS Step Functions

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

の Step Functions リクエストデータをトレースする AWS X-Ray

を使用できます。 AWS X-Ray ステートマシンのコンポーネントを視覚化し、パフォーマンスのボトルネックを特定し、エラーの原因となったリクエストをトラブルシューティングします。ステートマシンはトレースデータを X-Ray に送信し、X-Ray はデータを処理してサービスマップと検索可能なトレースサマリーを生成します。

ステートマシンで X-Ray を有効にすると、すべての で Step Functions で実行されるリクエストをトレースできます。 AWS X-Ray が利用可能なリージョン。これにより、Step Functions リクエスト全体の詳細な概要が提供されます。Step Functions は、トレース ID がアップストリームサービスによって渡されない場合でも、ステートマシンを実行するためにトレースを X-Ray に送信します。X-Ray サービスマップを使用して、 を含むリクエストのレイテンシーを表示できます。 AWS X-Ray と統合された のサービス。また、サンプリングルールを設定することで、X-Ray で記録するリクエストとサンプリングレートを条件に応じて指定できます。

ステートマシン用 X-Ray が有効にならず、アップストリームサービスがトレース ID を渡さない場合、Step Functions はステートマシン実行用トレースを X-Ray 送信しません。ただし、アップストリームサービスによってトレース ID が渡されると、Step Functions はステートマシン実行のため、トレースを X-Ray に送信します。

以下を使用できます..。 AWS X-Ray と Step Functions の両方がサポートされているリージョン。X-Ray とStep Funcion のリージョンサポートに関する情報については、Step FunctionsX-Ray エンドポイントとクォータページを参照してください。

X-Ray 関数と Step Functions 結合クォータ

最大 7 日間、トレースにデータを追加し、30 日前のトレースデータと、X-Ray がトレースデータを格納する時間の長さに関するクエリを行うことができます。トレースは X-Ray クォータの対象となります。その他のクォータに加えて、X-Ray は Step Functions ステートマシンに最小保証トレースサイズ 100 KB を提供します。X-Ray に 100 KB を超えるトレースデータが提供される場合、フリーズトレースとなる可能性があります。X-Ray の他のクォータの詳細については、X-Ray エンドポイントとクォータ ページの Service Quotas セクションを参照してください。

重要

Step Functions は、分散マップ状態によって開始された子ワークフロー実行の X-Ray トレースをサポートしていません。このような実行では、トレースドキュメントのサイズ制限を簡単に超える可能性があるためです。

セットアップと設定

ステートマシンの作成時に X-Ray トレースを有効にする

[Specify details] (詳細の指定) ページの [Enable X-Ray tracing] (X-Ray によるトレースを有効にする) を選択して、新しいステートマシンの作成時に X-Ray トレースを有効にできます。

  1. Step Functions コンソールを開き、[ステートマシンの作成] を選択します。

  2. [作成方法を選択] ページで、適切なオプションを選択してステートマシンを作成します。[サンプルプロジェクトを実行] を選択する場合、ステートマシンの作成時に X-Ray トレースを有効にすることはできません。ステートマシンの作成後に X-Ray トレースを有効にする必要があります。既存のステートマシンで X-Ray を有効にする方法の詳細については、「既存のステートマシンで X-Ray を有効にする」を参照してください。

    [Next (次へ)] を選択します。

  3. [詳細の指定] ページで、ステートマシンを設定します。

  4. [X-Ray トレースを有効にする] を選択します。

    Step Functions ステートマシンは、ステートマシンの実行のために X-Ray にトレースを送信します。

    注記

    既存のIAMロールを使用する場合は、X-Ray の書き込みが許可されていることを確認する必要があります。必要なアクセス許可の詳細については、次のトピックを参照してください。

IAM を使用する ポリシー AWS X-Ray Step Functions の

X-Ray トレースを有効にするには、トレースを許可する適切なアクセス許可を持つ IAM ポリシーが必要です。ステートマシンが他の統合サービスを使用している場合は、追加のIAMポリシーが必要になる場合があります。特定のサービス統合のIAMポリシーを参照してください。

既存のステートマシンのために X-Ray のトレースを有効にする場合は、X-Ray のトレースを有効にできる許可を含んだポリシーを追加する必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", "xray:GetSamplingRules", "xray:GetSamplingTargets" ], "Resource": [ "*" ] } ] }

既存のステートマシンで X-Ray を有効にする

既存のステートマシンで X-Ray を有効にする:

  1. Step Functions コンソールで、トレースを有効にするステートマシンを選択します。

  2. [編集] を選択します。

  3. [X-Ray トレースを有効にする] を選択します。

    追加の変更が必要になる可能性があることを知らせる通知が表示されます。

    注記

    既存のステートマシンで X-Ray を有効にする場合は、X-Ray がトレースを実行するのに十分なアクセス許可を付与する IAMポリシーがあることを確認する必要があります。手動で追加するか、生成できます。詳細については、 のIAMポリシーセクションを参照してくださいIAM を使用する ポリシー AWS X-Ray Step Functions の

  4. (オプション) X-Ray 権限が含まれるように、ステートマシンの新しいロールを自動生成します。

  5. [Save] を選択します。

Step Functions 用 X-Ray トレースを設定

X-Ray トレースを有効にしてステートマシンを初めて実行すると、X-Ray トレースのデフォルトの設定値が使用されます。 AWS X-Ray は、アプリケーションに送信されるすべてのリクエストのデータを収集するわけではありません。代わりに、統計的に有意な数のリクエストのデータを収集します。デフォルトでは、毎秒、最初のリクエストを記録し、追加リクエストの 5% を記録します。1 秒あたり 1 つのリクエストがリザーバです。これにより、サービスがリクエストを処理している限り、毎秒少なくとも 1 つのトレースが記録されます。5% は、リザーバサイズを超えて追加リクエストがサンプリングされるレートです。

開始時にサービス料がかからないように、デフォルトのサンプリングレートは控えめになっています。 デフォルトのサンプリングルールを変更し、サービスまたはリクエストのプロパティに基づいてサンプリングを適用する追加のルールを設定するように X-Ray を設定できます。

例えば、サンプリングを無効にし、状態を変更したり処理したりする呼び出しに対するすべてのリクエストをトレースできます。 AWS アカウント または トランザクション。バックグラウンドポーリング、ヘルスチェック、接続保守などの大量の読み取り専用呼び出しには、低いレートでサンプリングを行い、発生した問題に気づけるデータを得ることができます。

ステートマシンのサンプリングルールを設定:

  1. X-Ray コンソール に移動します。

  2. [Sampling] (サンプリング) を選択します。

  3. ルールを作成するには、[Create sampling rule] (サンプリングルールの作成) を選択します。

    ルールを編集するには、ルールの名前を選択します。

    ルールを削除するには、ルールを選択し、[Actions] (アクション) メニューを使用して削除します。

名前や優先度など、既存のサンプリングルールの一部は変更できません。代わりに、既存のルールを追加またはクローンを作成し、望みの変更を行い、新しいルールを活用します。

X-Ray サンプリングルールの詳細および各種パラメータの設定方法については、X-Ray コンソールにおけるサンプリングルールの設定を参照してください。

アップストリームサービスの統合

エクスプレス、同期、標準ワークフローなどの Step Functions ワークフローの実行をアップストリームサービスと統合するには、traceHeader を設定する必要があります。これは、APIGateway HTTPAPIで を使用している場合に自動的に行われます。ただし、Lambda 関数や を使用している場合はSDK、 traceHeaderで を設定するか、自分で をStartExecutionStartSyncExecutionAPI呼び出す必要があります。

traceHeader 形式を \p{ASCII}∗ として指定する必要があります。また、Step Functions が同じトレース ID を使用できるようにするには、形式を Root={TRACE_ID};Sampled={1 or 0} として指定する必要があります。Lambda 関数を使用している場合は、TRACE_ID を現在のセグメントのトレース ID に置き換え、サンプリングモードが true の場合は、Sampled フィールドを 1 に設定し、サンプリングモードが false の場合は 0 に設定します。トレース ID をこの形式で指定すると、完全なトレースが確実に得られます。

以下は、traceHeader を指定する方法を示すために Python で記述された例です。

state_machine = config.get_string_paramter("STATE_MACHINE_ARN") if (xray_recorder.current_subsegment() is not None and xray_recorder.current_subsegment().sampled) : trace_id = "Root={};Sampled=1".format( xray_recorder.current_subsegment().trace_id ) else: trace_id = "Root=not enabled;Sampled=0" LOGGER.info("trace %s", trace_id) # execute it response = states.start_sync_execution( stateMachineArn=state_machine, input=event['body'], name=context.aws_request_id, traceHeader=trace_id ) LOGGER.info(response)

概念

X-Ray コンソール

左 AWS X-Ray コンソールでは、ステートマシンで X-Ray が有効になっているときにアプリケーションが処理するリクエストのサービスマップとトレースを表示できます。

ステートマシン実行のために X-Ray コンソールにアクセスする方法に関する情報は、X-Ray コンソールの表示 を参照してください。

X-Ray コンソールの詳細については、X-Ray コンソールのドキュメントを参照してください。

セグメント、サブセグメント、およびトレース

ステートマシンへのリクエストに関する情報をセグメントが記録します。これには、ステートマシンが実行する作業などの情報が含まれており、ダウンストリームコールに関する情報があるサブセグメントを含む可能性があります。

トレースでは、1 つのリクエストで生成されたセグメントをすべて収集します。

サンプリング

効率的にトレースを行ってアプリケーションが処理するリクエストの代表的なサンプルを提供するため、X-Ray によってサンプリングアルゴリズムが適用され、トレースするリクエストが決定されます。これは、サンプリングルールを編集すれば、変更できます。

メトリクス

ステートマシンの場合、X-Ray は呼び出し時間、状態遷移時間、Step Functions 全実行時間、およびこの実行時間の分散を計測します。この情報には、X-Ray コンソールを通じてアクセスできます。

分析

- AWS X-Ray Analytics コンソールは、トレースデータを解釈するためのインタラクティブなツールです。現在のトレースセットに関連付けられているグラフとメトリクスおよびフィールドのパネルをクリックして、アクティブなデータセットをきめ細かく絞り込むことができます。ステートマシンのパフォーマンスを分析して、パフォーマンスの問題を特定できます。

X-Ray 分析の詳細については、「 の操作」を参照してください。 AWS X-Ray Analytics コンソール

Step Functions サービス統合と X-Ray

の一部 AWS Step Functions と統合する のサービスは、 との統合を提供します。 AWS X-Ray トレースヘッダーをリクエストに追加したり、X-Ray デーモンを実行したり、サンプリングを決定したり、トレースデータを X-Ray にアップロードしたりします。その他は、 を使用して計測する必要があります。 AWS X-Ray SDK。X-Ray 統合をまだサポートしていないものもあります。Step Functions とのサービス統合を使用する場合は、完全なトレースデータを提供するために X-Ray 統合が必要です。

ネイティブ X-Ray サポート

ネイティブ X-Ray サポートとのサービス統合には、次のものがあります。

必要な計器

X-Ray 計器が必要なサービス統合:

  • Amazon Elastic Container Service

  • AWS Batch

  • AWS Fargate

クライアント側のトレースのみ

その他のサービス統合では、X-Ray のトレースはサポートされません。ただし、クライアント側のトレースは引き続き収集できます。

  • Amazon DynamoDB

  • Amazon EMR

  • Amazon SageMaker

  • AWS CodeBuild

  • AWS Glue

X-Ray コンソールの表示

X-Ray は、サービスからセグメント形式でデータを受け取ります。X-Ray は、トレースへの共通リクエストを含むセグメントをグループ化します。X-Ray は、トレースを処理して、アプリケーションのビジュアル表現を提供するサービスグラフを生成します。

ステートマシンの実行をスタートしたら、[Execution details] (実行詳細) セクションで [X-Ray trace map] (X-Ray トレースマップ) を選択して X-Ray トレースを表示できます。

ステートマシンに対する X-Ray を有効にした後、X-Ray コンソールでその実行のトレース情報を表示できます。

Step Functions の X-Ray トレース情報を表示

次の手順は、X-Ray を有効にして実行した後にコンソールに表示できる情報の種類を示しています。Amazon 、Amazon SQS、SNSおよび Lambda を使用してコールバックパターンの例を作成する サンプルプロジェクト用 X-Ray トレースが表示されます。

トレース

実行が完了した後、X-Ray コンソールに移動して、そこで X-Ray トレース ページが表示されます。これにより、サービスマップの概要と、ステートマシンのトレースおよびセグメント情報が表示されます。

ステートマシンの X-Ray トレースのスクリーンショット。

サービスマップ

X-Ray コンソールのサービスマップは、エラーが発生しているサービス、高レイテンシーとの接続があるサービスを特定するか、不成功に終わったリクエストのトレースを識別する助けとなります。

X-Ray トレースのサービスマップに焦点を当てたスクリーンショット。

トレースマップ上で、サービスノードを選択して、その接続を移動したリクエストを閲覧するため、そのノードまたは 2 つのノード間のエッジへのリクエストを閲覧できます。ここで、WaitForCallBack ノードが選択されており、その実行および応答ステータスに関する追加情報を表示できます。

X-Ray トレースノードの詳細例。

X-Ray サービスマップとステートマシンとの相関関係を確認できます。X-Ray をサポートしていれば、Step Functions によって呼び出されるサービス統合ごとにサービスマップノードがあります。

トレースするステートマシンのグラフィカル表現の例。

セグメントとサブセグメント

トレースは、1 つのリクエストで生成されたセグメントを収集します。各セグメントには、リソース名、リクエストの詳細、行った作業の詳細が含まれています。[Trace] (トレース) ページでは、セグメントと、拡大した場合は対応するサブセグメントが表示されます。セグメントまたはサブセグメントを選択して、その詳細を表示できます。

サービスマップ上のノードごとに異なるセグメントになります。

ステートマシンのセグメントとサブセグメントのスクリーンショット例。

セグメントを選択すると、リソース名、リクエストの詳細、行った作業の詳細が含まれています。

セグメントでは、完了した作業に関するデータをサブセグメントに分けることができます。サブセグメントを選択すると、詳細なタイミング情報と詳細が表示されます。サブセグメントには、 への呼び出しに関する追加の詳細を含めることができます。 AWS サービス、外部 HTTP API、またはSQLデータベース。

分析

- AWS X-Ray Analytics コンソールは、トレースデータを解釈するためのインタラクティブなツールです。これを使用して、ステートマシンのパフォーマンスをより簡単に理解できます。インタラクティブな応答時間と時系列グラフを使用してトレースを探索、分析、視覚化し、パフォーマンスとレイテンシーの問題の特定に役立てることができます。

現在のトレースセットに関連付けられているグラフとメトリクスおよびフィールドのパネルをクリックして、アクティブなデータセットをきめ細かく絞り込むことができます。

構成

X-Ray コンソールから、サンプリングと暗号化オプションを設定できます。

  • [Sampling] (サンプリング) を選択して、サンプリングレートと設定の詳細を表示します。

    サンプリングルールを変更して記録するデータの量を制御し、特定の要件に合わせてサンプリング動作を変更できます。

  • Encryption (暗号化) を選択して、暗号化設定を変更します。

    X-Ray が保管中のトレースとデータを暗号化するデフォルト設定を使用することも、必要に応じてKMSキーを選択することもできます。スタンダード AWS KMS 後者の場合、 料金が適用されます。

トレースマップまたはサービスマップにデータがない場合はどうなりますか。

X-Ray が有効なものの、X-Ray コンソールでデータが表示されない場合は、次の点をチェックしてください。

  • IAM ロールが正しく設定され、X-Ray への書き込みが許可されます。

  • サンプリングルールでは、データのサンプリングが許可されています。

  • 新しく作成または変更されたIAMロールが適用されるまでに少し時間がかかる可能性があるため、数分後にトレースまたはサービスマップを再度確認してください。

  • X-Ray トレースパネルにデータが見つかりませんと表示されている場合は、IAMアカウント設定を確認し、 AWS Security Token Service は、目的のリージョンで有効になっています。詳細については、「アクティブ化と非アクティブ化」を参照してください。 AWS STS の AWS リージョン「」(IAM ユーザーガイド) を参照してください。