

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Amazon CloudWatch 監控 Step Functions 指標
<a name="procedure-cw-metrics"></a>

監控是維護 和 AWS 解決方案的可靠性、可用性 AWS Step Functions 和效能的重要部分。您可以從用來偵錯多點失敗的服務 AWS 收集資料。

開始監控 Step Functions 之前，您應該建立可回答下列問題的監控計畫：
+ 監控目標是什麼？
+ 要監控哪些資源？
+ 監控這些資源的頻率為何？
+ 要使用哪些監控工具？
+ 誰將執行監控任務？
+ 發生問題時應該通知誰？

下一個步驟是在您的環境中建立正常 效能的基準。若要完成此步驟，請在各種時間及不同負載條件下測量效能。當您監控 Step Functions 時，請考慮儲存歷史監控資料。這類資料會提供基準，讓您可與目前的效能資料比較，以識別出正常的效能模式和效能異常狀況，再規劃方法來處理問題。

我們建議您監控活動和任務失敗，以建立基準。當效能超出基準指標時，請設定提醒，以便您可以研究根本原因。

若要建立基準，您至少必須監控下列指標：
+  `ExecutionsStarted` 
+  `ExecutionsTimedOut` 
+  *選用* （如果您使用活動） - `ActivitiesStarted` 
+  *選用* （如果您使用活動） - `ActivitiesTimedOut` 

## CloudWatch 的 Step Functions 指標類型
<a name="sfn-cw-metrics"></a>

Step Functions 為 Amazon CloudWatch 提供下列類型的指標。您可以使用這些指標來追蹤狀態機器和活動，並設定閾值的警示。您可以使用 檢視指標 AWS 管理主控台。

指標會依*命名空間*分組，這是 CloudWatch 指標的容器，因此不同應用程式的指標不會錯誤地彙總在一起。

**非 ASCII 名稱和記錄**  
Step Functions 接受包含非 ASCII 字元的狀態機器、執行、活動和標籤名稱。由於這類字元會阻止 Amazon CloudWatch 記錄資料，因此我們建議您僅使用 ASCII 字元，以便您可以追蹤 Step Functions 指標。

### CloudWatch 指標交付
<a name="cloudwatch-best-effort"></a>

CloudWatch 指標是依最佳作業基礎交付。

不保證指標的完成程度與時間先後順序。特定要求的資料點回傳，回傳時附有的時間戳記可能會晚於實際處理要求時間。一分鐘的資料點可能會在透過 CloudWatch 提供之前延遲，或者完全無法交付。 CloudWatch請求指標可讓您近乎即時地了解狀態機器執行。這並非所有執行相關指標的完整會計。

其遵循此功能的最佳工作性質，即[帳單與成本管理儀表板](https://console.aws.amazon.com/billing/home?#/)提供的報告可能包含一或多個未出現在執行指標中的存取請求。

### 報告時間間隔的指標
<a name="monitoring-using-cloudwatch-time-interval-metrics"></a>

某些 Step Functions CloudWatch 指標是*時間間隔*，一律以毫秒為單位。這些指標通常對應至您執行的階段，您可以為其設定狀態機器、活動和 Lambda 函數逾時，以及描述性名稱。

例如，`ActivityRunTime` 指標會測量活動開始執行後所需的完成時間。您可以為相同的期間設定逾時值。

在 CloudWatch 主控台中，如果您選擇 **average (平均)** 做為時間間隔指標的統計資料，則可以獲得最佳結果。

### 報告計數的指標
<a name="monitoring-using-cloudwatch-count-metrics"></a>

有些 Step Functions CloudWatch 指標會將結果報告為*計數*。例如，`ExecutionsFailed` 會記錄狀態機器執行的失敗次數。

值得注意的是，Step Functions 會為每個狀態機器執行發出**兩個**`ExecutionsStarted`指標。因此，`ExecutionsStarted`指標的 [SampleCount](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html) 統計資料會顯示每個狀態機器執行的值 **2**。SampleCount 統計資料`ExecutionStarted=0`會在執行完成後顯示 `ExecutionStarted=1`和 。

同樣地，其他執行狀態指標可能會因為at-least-once一次且盡最大努力交付而發出多次CloudWatch。

**提示**  
對於在 CloudWatch 主控台中報告計數的指標，建議使用**總和**作為顯示統計資料。

## 在 CloudWatch 中檢視 Step Functions 指標
<a name="monitoring-using-cloudwatch-console"></a>

您可以使用 CloudWatch 主控台來檢視執行、活動、函數和服務整合的 Step Functions 指標。

1. 登入 AWS 管理主控台 並開啟 CloudWatch 主控台。

1. 選擇 **Metrics (指標)** 並前往 **All Metrics (所有指標)** 標籤，然後選擇 **States (狀態)**。

   如果您最近執行任何執行，您最多會看到四種類型的指標：
   +  **執行指標** 
   +  **Activity Function Metrics (活動函數指標)** 
   +  **Lambda 函數指標** 
   +  **服務整合指標** 

1. 選擇指標類型，以查看指標清單。
   + 若要檢視指標的圖表，請在清單上選擇指標旁的方塊。您可以使用圖表視圖上方的時間範圍控制變更圖表參數。

     您可以使用相對值或絕對值 (特定天數和時間) 選擇自訂時間範圍。您還可以使用下拉式清單將值顯示為行、重疊圖表或號碼 (值)。
   + 若要檢視圖形的詳細資訊，請將滑鼠游標暫留在圖形下方顯示的指標顏色代碼上，以顯示指標詳細資訊。

如需使用 CloudWatch 指標的詳細資訊，請參閱《[Amazon CloudWatch 使用者指南》中的使用 Amazon CloudWatch 指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/working_with_metrics.html)。 *Amazon CloudWatch *

## 在 CloudWatch 中設定 Step Functions 指標的警示
<a name="monitoring-using-cloudwatch-console-set-alarm"></a>

您可以使用 Amazon CloudWatch 警示來執行動作。例如，如果您想知道何時達到警示閾值，您可以設定警示，將通知傳送至 Amazon SNS `StateMachinesFailed` 主題，或在指標超過特定閾值時傳送電子郵件。

### 設定指標的警示
<a name="to-set-an-alarm-on-a-metric"></a>

1. 登入 AWS 管理主控台 並開啟 CloudWatch 主控台。

1. 選擇要檢視的一或多個指標，然後選擇**圖形化指標**。

1. 選擇清單中指標旁的鐘形圖示，以顯示**建立警示**頁面。

1. 輸入 **Alarm threshold (警示閾值)** 和 **Actions (動作)** 的值，然後選擇 **Create Alarm (建立警示)**。

如需設定和使用 CloudWatch 警示的詳細資訊，請參閱《[Amazon CloudWatch 使用者指南》中的建立 Amazon CloudWatch 警示](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/AlarmThatSendsEmail.html)。 *Amazon CloudWatch *

## 帳戶層級用量指標
<a name="cloudwatch-step-functions-account-metrics"></a>

`AWS/Usage` 命名空間包含下列 Step Functions 指標。

下列指標是無維度的，並套用於區域中的 帳戶。


| 指標 | Description | 
| --- | --- | 
| StateMachineCount |  帳戶中目前作用中狀態機器的計數。您可能需要在帳戶中新增或刪除狀態機器，並等待幾分鐘為您的帳戶啟用此指標。  | 
| ActivityCount |  您帳戶中目前作用中活動的計數。您可能需要在帳戶中新增或刪除活動，並等待幾分鐘為您的帳戶啟用此指標。  | 
| OpenExecutionCountPerStateMachine |  開啟您帳戶中每個狀態機器的執行。  | 

## 執行指標
<a name="cloudwatch-step-functions-execution-metrics"></a>

`AWS/States` 命名空間包含所有 Step Functions 執行的下列指標。

下列指標是無維度的，並套用於區域中的 帳戶。


| 指標 | Description | 
| --- | --- | 
| OpenExecutionCount |  目前*開啟執行*的大約數量 - 目前在您帳戶中進行中的工作流程。 目的是深入了解工作流程何時接近**最大**執行限制，以避免在呼叫 `StartExecution`或`RedriveExecution`標準工作流程時發生 **ExecutionLimitExceeded** 錯誤。 `OpenExecutionCount` 是開啟工作流程的大致數量。此指標將低於觀察到的執行中工作流程計數。執行中的開啟工作流程計數低於 10,000 個時，可能會顯示零個開啟執行。若要在接近 時通知警示`OpenExecutionLimit`，我們建議您使用閾值為 100K 或更高[的最大](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html)統計資料，因為預設開放工作流程限制為 1，000，000 個執行。  | 
| OpenExecutionLimit |  開啟的執行數目上限。如需詳細資訊，請參閱[與帳戶相關的配額](service-quotas.md#service-limits-accounts)。  *此限制不適用於快速工作流程。*  | 

### 所有狀態機器的執行指標
<a name="cloudwatch-step-functions-execution-metrics-version-alias"></a>

所有狀態機器都會發出指標。只有在限流執行的情況下才會發出`ExecutionThrottled`指標。

您可以使用 篩選下列指標`StateMachineArn`，以識別特定狀態機器。

**帳戶層級指標**  
如果沒有狀態機器 ARN，下列指標會在**帳戶層級**報告。提供狀態機器 ARN 以在狀態機器層級報告。


| 指標 | Description | 
| --- | --- | 
| ExecutionsAborted | 中止或終止的執行次數。 | 
| ExecutionsFailed | 失敗的執行次數。 | 
| ExecutionsStarted | 已啟動的執行數目。 | 
| ExecutionsSucceeded | 成功完成的執行數量。 | 
| ExecutionsTimedOut | 因任何原因逾時的執行次數。 | 
| ExecutionThrottled | 已調節StateEntered的事件和重試次數。這和 StateTransition 的調節有關。如需詳細資訊，請參閱[狀態調節相關的配額](service-quotas.md#service-limits-api-state-throttling)。 | 
| ExecutionTime | 執行開始到關閉之間的間隔，以毫秒為單位。 | 

### Express Workflows 的執行指標
<a name="cloudwatch-step-functions-execution-metrics-express-wf"></a>

`AWS/States` 命名空間包含 Step Functions Express Workflows 執行的下列指標。

**帳戶層級指標**  
如果沒有狀態機器 ARN， `ExpressExecutionBilledDuration`和 會在**帳戶層級**`ExpressExecutionBilledMemory`報告。提供狀態機器 ARN 以在狀態機器層級報告。


| 指標 | Description | 
| --- | --- | 
| ExpressExecutionBilledDuration |  收取快速工作流程費用的持續時間。  | 
| ExpressExecutionBilledMemory | 收取快速工作流程費用的耗用記憶體數量。 | 
|  ExpressExecutionMemory  |  特定快速工作流程耗用的總記憶體。  | 

### Redrive 標準工作流程的執行指標
<a name="cloudwatch-redrive-execution-metrics"></a>

當您[redrive](redrive-executions.md)執行狀態機器時，Step Functions 會發出下列指標。

對於所有redriven執行，會發出 `Executions*` 指標。例如，假設redriven執行中止。此執行會發出 `RedrivenExecutionsAborted`和 的非零資料點`ExecutionsAborted`。


| 指標 | Description | 
| --- | --- | 
| ExecutionsRedriven | redriven 執行次數。 | 
| RedrivenExecutionsAborted | 已取消或終止的redriven執行數目。 | 
| RedrivenExecutionsTimedOut | 因任何原因逾時的redriven執行次數。 | 
| RedrivenExecutionsSucceeded | 成功完成的redriven執行數目。 | 
| RedrivenExecutionsFailed | 失敗的redriven執行次數。 | 

### Step Functions 執行指標的維度
<a name="cloudwatch-step-functions-execution-metrics-dimensions"></a>


| 維度 | Description | 
| --- | --- | 
|  StateMachineArn  |  執行有問題之狀態機器的 Amazon Resource Name (ARN)。  | 

### 版本 執行的維度
<a name="cloudwatch-setp-functions-version-metrics-dimensions"></a>


| 維度 | Description | 
| --- | --- | 
|  StateMachineArn  |  狀態機器的 Amazon Resource Name (ARN)，其執行是由[版本](concepts-state-machine-version.md)啟動。  | 
| Version | 用來啟動執行的狀態機器版本。 | 

### 使用別名執行的維度
<a name="cloudwatch-setp-functions-alias-metrics-dimensions"></a>


| 維度 | Description | 
| --- | --- | 
|  StateMachineArn  |  狀態機器的 Amazon Resource Name (ARN)，其執行是由[別名](concepts-state-machine-alias.md)啟動。  | 
| Alias | 用來啟動執行的狀態機器別名。 | 

## 映射執行指標
<a name="resource-count-metrics-map-run"></a>

`AWS/States` 命名空間包含所有 Step Functions 映射執行的下列指標。這些是套用至您 區域中帳戶的無維度指標。


| 指標 | Description | 
| --- | --- | 
| ApproximateOpenMapRunCount |  您帳戶中目前開啟的 Map Runs 的大約數量。 透過此指標，您可以在接近 **OpenMapRunLimit** 時採取動作，以避免未記錄的 Map Runs。 若要在接近 **OpenMapRunLimit** 時通知警示，建議您使用閾值為 900 或更高**的最大**統計資料，因為預設 **OpenManRunLimit** 是 1，000 個映射執行。  | 
| OpenMapRunLimit |  開啟的 Map Runs 數目上限。 如需詳細資訊，請參閱[與帳戶相關的配額](service-quotas.md#service-limits-accounts)。  | 
| ApproximateMapRunBacklogSize |  *待處理*的 [Map Runs](concepts-examine-map-run.md) 大約數量。待處理的 Map Runs 會在 [MapRunStarted](https://docs.aws.amazon.com/step-functions/latest/apireference/API_MapRunStartedEventDetails.html) 事件中等待，直到開啟的 Map Runs 總數小於配額。 Map Run 待處理時，項目的計數將為零。Map Run 開啟並開始讀取其輸入後，計數將會增加。  | 

## 版本和別名指標
<a name="resource-count-metrics-alias-versions"></a>

`AWS/States` 命名空間包含狀態機器版本和別名計數的下列指標。


| 指標 | Description | 
| --- | --- | 
| AliasCount |  為狀態機器建立的[別名](concepts-state-machine-alias.md)數目。 您可以為每個狀態機器[建立](concepts-state-machine-alias.md#procedure-create-aliases)最多 100 個別名。  | 
| VersionCount |  狀態機器發佈的[版本](concepts-state-machine-version.md)數量。 您最多可以[發佈](concepts-state-machine-version.md#procedure-create-versions) 1000 個版本的狀態機器。  | 

### 版本和別名的資源計數指標維度
<a name="resource-count-metrics-alias-versions-dimensions"></a>


| 維度 | Description | 
| --- | --- | 
|  ResourceArn  |  具有版本或別名之狀態機器的 Amazon Resource Name (ARN)。  | 

## 活動指標
<a name="cloudwatch-step-functions-activity-metrics"></a>

`AWS/States` 命名空間包含 Step Functions 活動的下列指標。

**帳戶層級指標**  
如果沒有狀態機器 ARN，下列指標會在**帳戶層級**報告。提供狀態機器 ARN 以在狀態機器層級報告。


| 指標 | Description | 
| --- | --- | 
| ActivitiesFailed | 失敗的活動數量。 | 
| ActivitiesHeartbeatTimedOut | 由於活動訊號逾時而逾時的活動數量。 | 
| ActivitiesScheduled | 排程活動的數量。 | 
| ActivitiesStarted | 已開始的活動數量。 | 
| ActivitiesSucceeded | 成功完成的活動數量。 | 
| ActivitiesTimedOut | 關閉時逾時的活動數量。 | 
| ActivityRunTime  | 活動開始到關閉之間的間隔，以毫秒為單位。 | 
| ActivityScheduleTime | 活動保持排程狀態的間隔，以毫秒為單位。 | 
| ActivityTime | 活動排程時間與關閉時間之間的間隔，以毫秒為單位。 | 

### Step Functions 活動指標的維度
<a name="cloudwatch-step-functions-activity-metrics-dimensions"></a>


| 維度 | Description | 
| --- | --- | 
| ActivityArn |  該活動的 ARN。  | 

## Lambda 功能指標
<a name="cloudwatch-step-functions-lambda-function-metrics"></a>

`AWS/States` 命名空間包含下列 Lambda 函數的指標，這些指標**直接**在任務狀態定義的資源欄位中參考。您可能會在舊版狀態機器中找到這些指標。在現代狀態機器中，建議使用會發出服務整合指標的最佳化 Lambda 整合。


|  指標  |  Description  | 
| --- | --- | 
| LambdaFunctionRunTime | Lambda 函數啟動到關閉之間的間隔，以毫秒為單位。 | 
| LambdaFunctionScheduleTime | Lambda 函數保持排程狀態的間隔，以毫秒為單位。 | 
| LambdaFunctionTime | 排程 Lambda 函數到關閉時間之間的間隔，以毫秒為單位。 | 
| LambdaFunctionsFailed | 失敗的 Lambda 函數數量。 | 
| LambdaFunctionsScheduled | 排程 Lambda 函數的數量。 | 
| LambdaFunctionsStarted | 已啟動的 Lambda 函數數目。 | 
| LambdaFunctionsSucceeded | 成功完成的 Lambda 函數數量。 | 
| LambdaFunctionsTimedOut | 關閉時逾時的 Lambda 函數數目。 | 

### Step Functions Lambda Function 指標的維度
<a name="cloudwatch-step-functions-lambda-function-metrics-dimensions"></a>


|  維度  |  Description  | 
| --- | --- | 
| LambdaFunctionArn |  Lambda 函數的 ARN。  | 

**注意**  
對於在 ` Resource` 欄位中指定 Lambda 函數 ARN 的任務狀態，會發出 Lambda 函數指標。任務狀態改為使用`"Resource": "arn:aws:states:::lambda:invoke"`發出服務整合指標。如需詳細資訊，請參閱[使用 Step AWS LambdaFunctions 叫用 函數](connect-lambda.md)。

## 服務整合指標
<a name="cloudwatch-step-functions-service-integration-metrics"></a>

`AWS/States` 命名空間包含 Step Functions 服務整合的下列指標。如需詳細資訊，請參閱[將 服務與 Step Functions 整合](integrate-services.md)。


|  指標  |  Description  | 
| --- | --- | 
| ServiceIntegrationRunTime | 服務任務開始到關閉之間的間隔，以毫秒為單位。 | 
| ServiceIntegrationScheduleTime | 服務任務保持排程狀態的間隔，以毫秒為單位。 | 
| ServiceIntegrationTime | 服務任務排程時間與關閉時間之間的間隔，以毫秒為單位。 | 
| ServiceIntegrationsFailed | 失敗的服務任務數量。 | 
| ServiceIntegrationsScheduled | 排定的服務任務數量。 | 
| ServiceIntegrationsStarted | 已啟動的服務任務數量。 | 
| ServiceIntegrationsSucceeded | 成功完成的服務任務數量。 | 
| ServiceIntegrationsTimedOut | 關閉時逾時的服務任務數量。 | 

### Step Functions 服務整合指標的維度
<a name="cloudwatch-step-functions-service-integration-metrics-dimensions"></a>


|  維度  |  Description  | 
| --- | --- | 
| ServiceIntegrationResourceArn |  整合服務的資源 ARN。  | 

## 服務指標
<a name="cloudwatch-step-functions-service-metrics"></a>

`AWS/States` 命名空間包含 Step Functions 服務指標的下列指標。

**帳戶層級指標**  
如果沒有狀態機器 ARN，下列指標會在**帳戶層級**報告。提供狀態機器 ARN 以在狀態機器層級報告。


| 指標 | Description | 
| --- | --- | 
| ConsumedCapacity |  每秒請求數。  | 
| ProvisionedBucketSize |  每秒可用請求的計數。  | 
| ProvisionedRefillRate |  允許進入儲存貯體的每秒請求數。  | 
| ThrottledEvents  | 已調節的請求計數。 | 

### Step Functions 服務指標的維度
<a name="cloudwatch-step-functions-service-metrics-dimensions"></a>


| 維度 | Description | 
| --- | --- | 
| ServiceMetric |  篩選資料以顯示 StateTransition。  | 
| StateMachineArn |  篩選資料以顯示特定狀態機器的轉換。  | 

## API 用量指標
<a name="cloudwatch-step-functions-api-metrics"></a>

`AWS/States` 命名空間包含 Step Functions API 的下列指標。


| 指標 | Description | 
| --- | --- | 
| ThrottledEvents  | 已調節的請求計數。 | 
| ProvisionedBucketSize |  每秒可用請求的計數。  | 
| ProvisionedRefillRate |  允許進入儲存貯體的每秒請求數。  | 
| ConsumedCapacity |  每秒請求數。  | 

### Step Functions API 指標的維度
<a name="cloudwatch-step-functions-api-metrics-dimensions"></a>


| 維度 | Description | 
| --- | --- | 
| APIName |  將資料篩選為指定之 API 名稱的 API。  | 