Amazon CloudWatch を使用した Step Functions メトリクスのモニタリング - AWS Step Functions

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

Amazon CloudWatch を使用した Step Functions メトリクスのモニタリング

モニタリングは、 および AWS Step FunctionsAWSソリューションの信頼性、可用性、パフォーマンスを維持する上で重要な部分です。マルチポイント障害のAWSデバッグに使用するサービスからデータを収集できます。

ただし、Step Functions のモニタリングをスタートする前に、以下の質問に回答するモニタリング計画を作成する必要があります。

  • モニタリングの目的は何ですか?

  • どのリソースをモニタリングしますか?

  • どのくらいの頻度でこれらのリソースをモニタリングしますか?

  • どのモニタリングツールを利用しますか?

  • 誰がモニタリングタスクを実行しますか?

  • 問題が発生したときに誰が通知を受け取りますか?

次のステップでは、通常の パフォーマンスのベースラインを環境に確立します。これを行うには、さまざまな時間帯に、さまざまな負荷条件でパフォーマンスを測定します。Step Functions をモニタリングするには、モニタリングデータの履歴を保存することを検討します。このデータを、最新のパフォーマンスデータと比較するベースラインとして使用し、通常のパフォーマンスのパターンやパフォーマンスの異常を検出して、問題への対応を検討することができます。

アクティビティおよびタスクの失敗をモニタリングして、ベースラインを確立することをお勧めします。パフォーマンスがベースラインメトリクスから外れた場合は、アラートを設定して根本原因を調査できるようにします。

ベースラインを確立するには、少なくとも、次のメトリクスをモニタリングする必要があります。

  • ExecutionsStarted

  • ExecutionsTimedOut

  • オプション (アクティビティを使用する場合) - ActivitiesStarted

  • オプション (アクティビティを使用する場合) - ActivitiesTimedOut

CloudWatch の Step Functions メトリクスのタイプ

Step Functions は Amazon CloudWatch に以下のタイプのメトリクスを提供しています。これらのメトリクスを使用してステートマシンおよびアクティビティを追跡し、しきい値のアラームを設定できます。を使用してメトリクスを表示できますAWS マネジメントコンソール。

メトリクスは CloudWatch メトリクスのコンテナである名前空間によってグループ化されるため、異なるアプリケーションのメトリクスが誤って集計されることはありません。

非 ASCII 名とログ記録

Step Functions では、ステートマシン、実行、アクティビティ、ラベルに、ASCII 以外の文字を含む名前を使用できます。このような文字を使用すると Amazon CloudWatch がデータを記録できなくなるため、Step Functions のメトリクスを追跡できるように ASCII 文字のみを使用することをお勧めします。

CloudWatch メトリクスの配信

CloudWatch メトリクスは、ベストエフォートで配信されます。

メトリクスの完全性や適時性は保証されません。特定のリクエストのデータポイントが、リクエストが実際に処理されたよりも後のタイムスタンプで返される場合があります。1 分のデータポイントが CloudWatch を通じて使用可能になる前に遅延したり、まったく配信されなかったりすることがあります。CloudWatch リクエストメトリクスは、ステートマシン実行の考え方をほぼリアルタイムで示します。これは、実行に関するメトリクスのすべてを完全に報告するためのものではありません。

この機能はベストエフォート型であるため、請求情報とコスト管理ダッシュボードで利用できるレポートには、実行メトリクスに表示されない 1 つ以上のアクセスリクエストが含まれることがあります。

時間間隔を報告するメトリクス

Step Functions CloudWatch メトリクスの一部は時間間隔であり、常にミリ秒単位で測定されます。これらのメトリクスは通常、ステートマシン、アクティビティ、Lambda 関数タイムアウトを設定できる実行段階に対応しており、わかりやすい名前が付いています。

例えば、ActivityRunTime メトリクスは、アクティビティが実行をスタートしてから完了するまでの時間を測定します。同じ期間のタイムアウト値を設定できます。

CloudWatch コンソールでは、時間間隔メトリクスの表示統計として [average] (平均) を選択した場合に最良の結果になります。

カウントを報告するメトリクス

一部の Step Functions CloudWatch メトリクスは、結果をカウントとして報告します。例えば、ExecutionsFailed はステートマシンの実行が失敗した回数を記録します。

注目点として、Step Functions は、ステートマシンが実行されるたびに 2 つの ExecutionsStarted メトリクスを出力します。その結果、ステートマシンが実行されるたびに、ExecutionsStarted メトリクスの SampleCount 統計に 2 の値が表示されます。SampleCount 統計には、実行完了時に ExecutionStarted=1 とその後に ExecutionStarted=0 が表示されます。

同様に、他の実行ステータスのメトリクスも、CloudWatch メトリクスが「最低 1 回の配信」および「ベストエフォートの配信」方式を採用しているため、複数回出力されることがあります。

ヒント

CloudWatch コンソールでカウントをレポートするメトリクスの表示統計として [合計] を使用することをお勧めします。

CloudWatch での Step Functions メトリクスの表示

CloudWatch コンソールを使用して、実行、アクティビティ、関数、サービス統合の Step Functions メトリクスを表示できます。

  1. にサインインAWS マネジメントコンソールし、CloudWatch コンソールを開きます。

  2. [Metrics] (メトリクス) を選択し、[All Metrics] (すべてのメトリクス) タブで、[States] (状態) を選択します。

    最近実行した場合、最大 4 タイプのメトリクスが表示されます。

    • 実行メトリクス

    • アクティビティ関数メトリクス

    • Lambda 関数メトリクス

    • サービス統合メトリクス

  3. メトリクスタイプを選択してメトリクスのリストを表示します。

    • メトリクスのグラフを表示するには、リストでメトリクスの横にあるボックスをオンにします。グラフパラメータは、グラフビューの上にある時間範囲コントロールを使用して変更できます。

      相対値または絶対値 (日時を指定) を使用してカスタム時間範囲を選択できます。ドロップダウンリストを使用して値を線、積み上げ領域、または数字 (値) として表示することもできます。

    • グラフの詳細を表示するには、グラフの下に表示されるメトリクス色コードにマウスカーソルを合わせてメトリクスの詳細を表示します。

CloudWatch メトリクスの操作方法の詳細については、Amazon CloudWatch ユーザーガイドAmazon CloudWatch メトリクスの使用を参照してください。

CloudWatch での Step Functions メトリクスのアラームの設定

Amazon CloudWatch アラームを使用してアクションを実行することができます。例えば、アラームのしきい値に到達するのがいつか知りたい場合、StateMachinesFailed メトリクスが一定のしきい値を超えたときに Amazon SNS トピックに通知を送信したり、メールを送信したりするようにアラームを設定できます。

メトリクスにアラームを設定するには

  1. にサインインAWS マネジメントコンソールし、CloudWatch コンソールを開きます。

  2. 表示するメトリクスを 1 つ以上選択し、グラフ化されたメトリクスを選択します。

  3. リストのメトリクスの横にあるベル型のアイコンを選択すると、[アラームの作成] ページが表示されます。

  4. [Alarm threshold] (アラームしきい値) と [Actions] (アクション) に値を入力し、[Create Alarm] (アラームの作成) を選択します。

設定と CloudWatch アラームの使用に関する詳細については、状態の変更の詳細については、Amazon CloudWatch ユーザーガイドAmazon CloudWatch アラームの作成を参照してください。

アカウントレベルの使用状況メトリクス

AWS/Usage 名前空間には、次の Step Functions メトリクスが含まれます。

次のメトリクスはディメンションレスで、リージョン内のアカウントに適用されます。

メトリクス 説明
StateMachineCount

アカウントで現在アクティブなステートマシンの数。アカウントでステートマシンを追加または削除し、アカウントでこのメトリクスをアクティブ化するまで数分待つ必要がある場合があります。

ActivityCount

アカウントで現在アクティブなアクティビティの数。アカウントでアクティビティを追加または削除し、アカウントのこのメトリクスをアクティブ化するまで数分待つ必要がある場合があります。

OpenExecutionCountPerStateMachine

アカウントのステートマシンごとに実行を開きます。

実行メトリクス

AWS/States 名前空間には、以下のすべての Step Functions 実行のメトリクスが含まれます。

次のメトリクスはディメンションレスで、リージョン内のアカウントに適用されます。

メトリクス 説明
OpenExecutionCount

現在のオープン実行の概算数 — アカウントで現在進行中のワークフロー。

目的は、Standard ワークフローで StartExecution または RedriveExecution を呼び出すときに ExecutionLimitExceeded エラーを回避するため、ワークフローがいつ最大実行制限に近づいているかを把握することです。

OpenExecutionCount は、オープンワークフローのおおよその数です。このメトリクスは、観測された実行中のワークフロー数よりも低くなります。10,000 未満のオープンワークフロー数を実行すると、オープン実行がゼロになる場合があります。OpenExecutionLimit に近づいている場合に通知するアラームについては、デフォルトのオープン状態のワークフローの実行制限が 100 万であるため、しきい値が 10 万以上の [最大] 統計を使用することをお勧めします。

OpenExecutionLimit

オープン実行の最大数。詳細については、「アカウントに関連するクォータ」を参照してください。

この制限は Express ワークフローには適用されません。

すべてのステートマシンの実行メトリクス

すべてのステートマシンはメトリクスを出力します。ExecutionThrottled メトリクスは、スロットリング実行の場合にのみ出力されます。

次のメトリクスを でフィルタリングStateMachineArnして、特定のステートマシンを識別できます。

アカウントレベルのメトリクス

ステートマシン ARN がない場合、次のメトリクスはアカウントレベルでレポートされます。ステートマシンレベルでレポートするステートマシン ARN を指定します。

メトリクス 説明
ExecutionsAborted 中断または終了された実行の数。
ExecutionsFailed 失敗した実行の数。
ExecutionsStarted スタートされた実行の数。
ExecutionsSucceeded 正常に完了した実行の数。
ExecutionsTimedOut 何らかの理由でタイムアウトした実行の数。
ExecutionThrottled スロットリングされた StateEntered イベントと再試行の回数。これは StateTransition のスロットリングに関連しています。詳細については、「状態のスロットリングに関連するクォータ」を参照してください。
ExecutionTime 実行のスタート時点から終了時点までの間隔 (ミリ秒単位)。

Express ワークフローの実行メトリクス

AWS/States 名前空間には、以下の Step Functions Express Workflows 実行のメトリクスが含まれます。

アカウントレベルのメトリクス

ステートマシン ARN がない場合、 ExpressExecutionBilledDurationと はアカウントレベルでExpressExecutionBilledMemoryレポートします。ステートマシンレベルでレポートするステートマシン ARN を指定します。

メトリクス 説明
ExpressExecutionBilledDuration

Express ワークフローに課金される期間。

ExpressExecutionBilledMemory

Express ワークフローに課金される消費メモリ量。

ExpressExecutionMemory

特定の Express ワークフローによって消費されるメモリの合計。

標準ワークフローの Redrive 実行メトリック

redrive ステートマシンを実行すると、Step Functions は次のメトリクスを出力します。

すべての redriven 実行で、Executions* メトリクスが出力されます。例えば、redriven実行が中止されたとします。この実行では、RedrivenExecutionsAbortedExecutionsAborted の両方で、0 以外のデータポイントが出力されます。

メトリクス 説明
ExecutionsRedriven redriven 実行の回数。
RedrivenExecutionsAborted キャンセルまたは終了された redriven 実行の数。
RedrivenExecutionsTimedOut 何らかの理由でタイムアウトした redriven 実行の数。
RedrivenExecutionsSucceeded 正常に完了した redriven 実行の数。
RedrivenExecutionsFailed 失敗した redriven 実行の数。

Step Functions 実行メトリクスのディメンション

ディメンション 説明
StateMachineArn

当該の実行に関するステートマシンの Amazon リソースネーム (ARN)

バージョンを使用した実行のディメンション

ディメンション 説明
StateMachineArn

バージョンによって実行が開始されたステートマシンの Amazon リソースネーム (ARN)。

Version

実行を開始するために使用されるステートマシンのバージョン。

エイリアスを使用した実行のディメンション

ディメンション 説明
StateMachineArn

エイリアスによって実行が開始されたステートマシンの Amazon リソースネーム (ARN)。

Alias

実行を開始するために使用されるステートマシンのエイリアス。

マップ実行メトリクス

AWS/States 名前空間には、Step Functions のすべてのマップ実行に対する次のメトリクスが含まれています。これらは、リージョン内のアカウントに適用されるディメンションレスのメトリクスです。

メトリクス 説明
ApproximateOpenMapRunCount

アカウントで現在進行中でオープン状態のマップ実行の概算数。

このメトリクスを使用すると、OpenMapRunLimit に近づいたときにアクションを実行して、バックログ状態のマップ実行を回避できます。

OpenMapRunLimit に近づいたときに通知するアラームには、しきい値を 900 以上に設定した Maximum 統計を使用することをお勧めします (デフォルトの OpenMapRunLimit は 1,000)。

OpenMapRunLimit

オープン状態のマップ実行の最大数。

詳細については、「アカウントに関連するクォータ」を参照してください。

ApproximateMapRunBacklogSize

バックログ状態マップ実行の概算数。バックログ状態のマップ実行は、オープン状態のマップ実行の合計数がクォータを下回るまで MapRunStarted イベントで待機します。

マップ実行がバックログ状態の間、項目の数はゼロになります。マップ実行がオープン状態になり、入力の読み取りを開始すると、カウントが増加します。

バージョンとエイリアスメトリクス

AWS/States 名前空間には、ステートマシンのバージョンとエイリアスの数に関する以下のメトリクスが含まれます。

メトリクス 説明
AliasCount

ステートマシン用に作成されたエイリアスの数。

ステートマシンごとに最大 100 個のエイリアスを作成できます。

VersionCount

ステートマシンに公開されているバージョンの数。

ステートマシンのバージョンを最大 1000 個公開できます。

バージョンとエイリアスのリソース数メトリクスのディメンション

ディメンション 説明
ResourceArn

バージョンまたはエイリアスを持つステートマシンの Amazon リソースネーム (ARN)。

アクティビティのメトリクス

AWS/States 名前空間には、以下の Step Functions アクティビティのメトリクスが含まれます。

アカウントレベルのメトリクス

ステートマシン ARN がない場合、次のメトリクスはアカウントレベルでレポートされます。ステートマシンレベルでレポートするステートマシン ARN を指定します。

メトリクス 説明
ActivitiesFailed 失敗したアクティビティの数。
ActivitiesHeartbeatTimedOut ハートビートタイムアウトが原因でタイムアウトしたアクティビティの数。
ActivitiesScheduled スケジュールされたアクティビティの数。
ActivitiesStarted スタートされたアクティビティの数。
ActivitiesSucceeded 正常に完了したアクティビティの数。
ActivitiesTimedOut 終了時にタイムアウトしたアクティビティの数。
ActivityRunTime アクティビティのスタート時点から終了時点までの間隔 (ミリ秒単位)。
ActivityScheduleTime アクティビティがスケジュール状態に留まる間隔 (ミリ秒単位)。
ActivityTime アクティビティがスケジュールされてから終了するまでの間隔 (ミリ秒単位)。

Step Functions アクティビティメトリクスのディメンション

ディメンション 説明
ActivityArn

アクティビティの ARN。

Lambda 関数メトリクス

AWS/States 名前空間には、Task ステート定義の Resource フィールドで直接参照される、Lambda 関数に関する次のメトリクスが含まれます。これらのメトリクスは、レガシーステートマシンで見つかる場合があります。最新のステートマシンでは、サービス統合メトリクスを出力する最適化された Lambda 統合を使用することをお勧めします。

メトリクス 説明
LambdaFunctionRunTime Lambda 関数の開始時点から終了時点までの間隔 (ミリ秒単位)。
LambdaFunctionScheduleTime Lambda 関数がスケジュール状態に留まる間隔 (ミリ秒単位)。
LambdaFunctionTime Lambda 関数がスケジュールされた時点から終了する時点までの間隔 (ミリ秒単位)。
LambdaFunctionsFailed 失敗した Lambda 関数の数。
LambdaFunctionsScheduled スケジュールされた Lambda 関数の数。
LambdaFunctionsStarted 開始された Lambda 関数の数。
LambdaFunctionsSucceeded 正常に完了した Lambda 関数の数。
LambdaFunctionsTimedOut 終了時にタイムアウトした Lambda 関数の数。

Step Functions Lambda 関数メトリクスのディメンション

ディメンション 説明
LambdaFunctionArn

Lambda 関数の ARN。

注記

Lambda 関数メトリックスは、Lambda 関数 ARN を Resource フィールドに指定するタスク状態に対して発行されます。"Resource": "arn:aws:states:::lambda:invoke" を使用するタスクの状態は、代わりにサービス統合メトリックを発行します。詳細については、「Step Functions を使用して AWS Lambda関数を呼び出す」を参照してください。

サービス統合メトリクス

AWS/States 名前空間には、Step Functions サービス統合に対する次のメトリクスが含まれます。詳細については、「サービスと Step Functions の統合」を参照してください。

メトリクス 説明
ServiceIntegrationRunTime サービスタスクの開始時点から終了時点までの間隔 (ミリ秒単位)。
ServiceIntegrationScheduleTime サービスタスクがスケジュール状態に留まる間隔 (ミリ秒単位)。
ServiceIntegrationTime サービスタスクがスケジュールされてから終了するまでの間隔 (ミリ秒単位)。
ServiceIntegrationsFailed 失敗したサービスタスクの数。
ServiceIntegrationsScheduled スケジュールされたサービスタスクの数。
ServiceIntegrationsStarted 開始したサービスタスクの数。
ServiceIntegrationsSucceeded 正常に完了したサービスタスクの数。
ServiceIntegrationsTimedOut 終了時にタイムアウトしたサービスタスクの数。

Step Functions サービス統合メトリクスのディメンション

ディメンション 説明
ServiceIntegrationResourceArn

統合されたサービスのリソースの ARN。

サービスメトリクス

AWS/States 名前空間には、Step Functions サービスメトリクスの次のメトリクスが含まれます。

アカウントレベルのメトリクス

ステートマシン ARN がない場合、次のメトリクスはアカウントレベルでレポートされます。ステートマシンレベルでレポートするステートマシン ARN を指定します。

メトリクス 説明
ConsumedCapacity

1 秒あたりのリクエストの数。

ProvisionedBucketSize

1 秒あたりに利用できるリクエストの数。

ProvisionedRefillRate

バケットで許可される 1 秒あたりのリクエストの数。

ThrottledEvents

スロットリングされたリクエストの数。

Step Functions サービスメトリックのディメンション

ディメンション 説明
ServiceMetric

データをフィルタリングして StateTransition を表示します。

StateMachineArn

データをフィルタリングして、特定のステートマシンの遷移を表示します。

API 使用状況メトリクス

AWS/States 名前空間には、Step Functions API のため、以下のメトリクスが含まれます。

メトリクス 説明
ThrottledEvents

スロットリングされたリクエストの数。

ProvisionedBucketSize

1 秒あたりに利用できるリクエストの数。

ProvisionedRefillRate

バケットで許可される 1 秒あたりのリクエストの数。

ConsumedCapacity

1 秒あたりのリクエストの数。

Step Functions API メトリクスのディメンション

ディメンション 説明
APIName

指定された API 名の API にデータをフィルタリングします。