

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

# 適用於 CloudWatch 的 Amazon SWF 指標
<a name="cw-metrics"></a>

Amazon SWF 現在提供 CloudWatch 的指標，可用來追蹤工作流程和活動，並針對您選擇的閾值設定警示。您可以使用 檢視指標 AWS 管理主控台。如需詳細資訊，請參閱[使用 檢視 CloudWatch 的 Amazon SWF 指標 AWS 管理主控台](cw-metrics-console.md)。

**Topics**
+ [Amazon SWF 指標的報告單位](#swf-reporting-units)
+ [API 和決策事件指標](#swf-throttling-metrics)
+ [Amazon SWF 指標](#cloudwatch-swf-metrics)
+ [Amazon SWF 非 ASCII 資源名稱和 CloudWatch 維度](#cloudwatch-swf-non-ascii)

## Amazon SWF 指標的報告單位
<a name="swf-reporting-units"></a>

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

CloudWatch 的部分 Amazon SWF 指標是*時間間隔*，一律以毫秒為單位。CloudWatch 單位報告為 `Time`。這些指標通常對應至您可以設定工作流程和活動逾時的工作流程執行階段，並且具有類似的名稱。

例如，`DecisionTaskStartToCloseTime` 指標會測量決策任務開始執行後至完成所耗費的時間，這與您可以為 `DecisionTaskStartToCloseTimeout` 值設定的期間相同。

如需所有這些工作流程執行階段的圖表，及了解每個階段在工作流程和活動生命週期發生的時間，請參閱「[Amazon SWF 逾時類型](swf-timeout-types.md)」。

### 報告計數的指標
<a name="metrics-that-report-a-count"></a>

CloudWatch 報告結果的一些 Amazon SWF 指標以*計數*表示。例如，`WorkflowsCanceled` 會將結果記錄為 1** 或 0**，指出是否取消工作流程。值為 0 並不代表該指標未報告，意思是該指標描述的條件並未發生。

在 CloudWatch `Count`中報告 的一些 CloudWatch Amazon SWF 指標是*每秒計數*。例如，在 CloudWatch `Count`中報告為 `ProvisionedRefillRate`的 代表每秒請求`Count`的*速率*。

對於計數指標，最小值和最大值將一律為零或一，但平均值會是介於零到一的值。

## API 和決策事件指標
<a name="swf-throttling-metrics"></a>

 您可以在 CloudWatch 中同時監控 API 和決策事件，以深入了解您的用量和容量。請參閱 [Amazon SWF 中的基本工作流程概念](swf-dg-basic.md)一節中的[決策者](swf-dev-actors.md#swf-dev-actors-deciders)，以及 [Amazon Simple Workflow Service API 參考](https://docs.aws.amazon.com/amazonswf/latest/apireference/)中的[決策](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_Decision.html)主題。

您也可以監控這些限制，以便在接近 Amazon SWF 限流限制時發出警示。如需這些限制和其預設設定的描述，請參閱「[Amazon SWF 限流配額](swf-dg-limits.md#swf-throttling-limits)」。這些限制旨在預防不正確的工作流程使用過多的系統資源。若要請求提高限制，請參閱「[請求提高配額](swf-dg-limits.md#swf-dg-limits-how-to-increase)」。

最佳實務是，您應該將 CloudWatch 警示設定為大約 60% 的 API 或決策事件容量。這可讓您在啟用 Amazon SWF 限流之前調整工作流程或請求提高服務限制。根據呼叫的[高載性](https://en.wikipedia.org/wiki/Burstiness)，您可以設定不同的警示，以便於達到服務限制時發出通知：
+ 如果您的流量會有遽增情形，請設定在 `ProvisionedBucketSize` 達到 60% 的限制時發出警示。
+ 如果您呼叫的速率相當穩定，則請為相關 API 和決策事件設定在 `ProvisionedRefillRate` 達到 60% 的限制時發出警示。

## Amazon SWF 指標
<a name="cloudwatch-swf-metrics"></a>

下列指標適用於 Amazon SWF：


|  指標  |  Description  | 
| --- | --- | 
| `DecisionTaskScheduleToStartTime` | 決策任務排程後，到由工作者挑選並開始該任務之間的時間間隔 (毫秒)。<br />CloudWatch 單位： `Time`<br />維度：`Domain, WorkflowTypeName, WorkflowTypeVersion`<br />有效的統計資訊：`Average, Minimum, Maximum` | 
| `DecisionTaskStartToCloseTime` | 決策任務從開始到其關閉之間的時間間隔 (毫秒)。<br />CloudWatch 單位： `Time`<br />維度：`Domain, WorkflowTypeName, WorkflowTypeVersion`<br />有效的統計資訊：`Average, Minimum, Maximum` | 
| `DecisionTasksCompleted` | 已完成的決策作業計數。<br />CloudWatch 單位： `Count`<br />維度：`Domain, WorkflowTypeName, WorkflowTypeVersion`<br />有效的統計資訊：`Sum` | 
| PendingTasks | 以 1 分鐘為間隔的待處理任務特定任務清單計數。<br />CloudWatch 單位： `Count`<br />維度：`Domain, TaskListName`<br />有效的統計資訊：`Sum` | 
| `StartedDecisionTasksTimedOutOnClose` | 已開始但於關閉時已逾時的決策作業計數。<br />CloudWatch 單位： `Count`<br />維度：`Domain, WorkflowTypeName, WorkflowTypeVersion`<br />有效的統計資訊：`Sum` | 
| `WorkflowStartToCloseTime` | 工作流程從開始到其關閉之間的時間 (毫秒)。<br />CloudWatch 單位： `Time`<br />維度：`Domain, WorkflowTypeName, WorkflowTypeVersion`<br />有效的統計資訊：`Average, Minimum, Maximum` | 
| `WorkflowsCanceled` | 已取消的工作流程的計數。<br />CloudWatch 單位： `Count`<br />維度：`Domain, WorkflowTypeName, WorkflowTypeVersion`<br />有效的統計資訊：`Sum` | 
| `WorkflowsCompleted` | 已完成的工作流程的計數。<br />CloudWatch 單位： `Count`<br />維度：`Domain, WorkflowTypeName, WorkflowTypeVersion`<br />有效的統計資訊：`Sum` | 
| `WorkflowsContinuedAsNew` | 繼續做為新工作流程的計數。<br />CloudWatch 單位： `Count`<br />維度：`Domain, WorkflowTypeName, WorkflowTypeVersion`<br />有效的統計資訊：`Sum` | 
| `WorkflowsFailed` | 失敗工作流程的計數。<br />CloudWatch 單位： `Count`<br />維度：`Domain, WorkflowTypeName, WorkflowTypeVersion`<br />有效的統計資訊：`Sum` | 
| `WorkflowsTerminated` | 已終止之工作流程的計數。<br />CloudWatch 單位： `Count`<br />維度：`Cause, Domain, WorkflowTypeName, WorkflowTypeVersion`<br />有效的統計資訊：`Sum` | 
| `WorkflowsTimedOut` | 因任何原因逾時的工作流程計數。<br />CloudWatch 單位： `Count`<br />維度：`Domain, WorkflowTypeName, WorkflowTypeVersion`<br />有效的統計資訊：`Sum` | 
| `ActivityTaskScheduleToCloseTime` | 活動自排程後到其關閉之間的時間間隔 (毫秒)。<br />CloudWatch 單位： `Time`<br />維度：`Domain, ActivityTypeName, ActivityTypeVersion`<br />有效的統計資訊：`Average, Minimum, Maximum` | 
| `ActivityTaskScheduleToStartTime` | 活動作業建立排程的時間與其開始的時間之間的時間間隔 (毫秒)。<br />CloudWatch 單位： `Time`<br />維度：`Domain, ActivityTypeName, ActivityTypeVersion`<br />有效的統計資訊：`Average, Minimum, Maximum` | 
| `ActivityTaskStartToCloseTime` | 活動任務從開始到其關閉之間的時間間隔 (毫秒)。<br />CloudWatch 單位： `Time`<br />維度：`Domain, ActivityTypeName, ActivityTypeVersion`<br />有效的統計資訊：`Average, Minimum, Maximum` | 
| `ActivityTasksCanceled` | 已取消的活動作業的計數。<br />CloudWatch 單位： `Count`<br />維度：`Domain, ActivityTypeName, ActivityTypeVersion`<br />有效的統計資訊：`Sum` | 
| `ActivityTasksCompleted` | 已完成的活動作業的計數。<br />CloudWatch 單位： `Count`<br />維度：`Domain, ActivityTypeName, ActivityTypeVersion`<br />有效的統計資訊：`Sum` | 
| `ActivityTasksFailed` | 失敗的活動作業的計數。<br />CloudWatch 單位： `Count`<br />維度：`Domain, ActivityTypeName, ActivityTypeVersion`<br />有效的統計資訊：`Sum` | 
| `ScheduledActivityTasksTimedOutOnClose` | 已排程但於關閉時已逾時的活動作業計數。<br />CloudWatch 單位： `Count`<br />維度：`Domain, ActivityTypeName, ActivityTypeVersion`<br />有效的統計資訊：`Sum` | 
| `ScheduledActivityTasksTimedOutOnStart` | 已排程但於開始時已逾時的活動作業計數。<br />CloudWatch 單位： `Count`<br />維度：`Domain, ActivityTypeName, ActivityTypeVersion`<br />有效的統計資訊：`Sum` | 
| `StartedActivityTasksTimedOutOnClose` | 已開始但於關閉時已逾時的活動作業計數。<br />CloudWatch 單位： `Count`<br />維度：`Domain, ActivityTypeName, ActivityTypeVersion`<br />有效的統計資訊：`Sum` | 
| `StartedActivityTasksTimedOutOnHeartbeat` | 已開始但因為活動訊號逾時而逾時的活動作業計數。<br />CloudWatch 單位： `Count`<br />維度：`Domain, ActivityTypeName, ActivityTypeVersion`<br />有效的統計資訊：`Sum` | 
| `ThrottledEvents` | 已調節之請求的計數。<br />CloudWatch 單位： `Count`<br />維度：`APIName, DecisionName, ThrottlingScope`<br />有效的統計資訊：`Sum` | 
| `ProvisionedBucketSize` | 每秒的可用請求計數。<br />維度：`APIName, DecisionName`<br />有效的統計資訊：`Minimum` | 
| `ConsumedCapacity` | 每秒的請求計數。<br />CloudWatch 單位： `Count`<br />維度：`APIName, DecisionName`<br />有效的統計資訊：`Sum` | 
| ConsumedLimit | 已耗用的一般限制數量。<br />維度：`GeneralLimitType` | 
| `ProvisionedRefillRate` | 每秒允許進入儲存貯體的請求計數。<br />維度：`APIName, DecisionName`<br />有效的統計資訊：`Minimum` | 
| ProvisionedLimit | 佈建到帳戶的一般限制量。<br />維度：`GeneralLimitType` | 


|  維度  |  Description  | 
| --- | --- | 
| `Domain` | 篩選資料至工作流程或活動執行所在的 Amazon SWF 網域。 | 
| `ActivityTypeName` | 將資料篩選為活動類型的名稱。 | 
| `ActivityTypeVersion` | 將資料篩選為活動類型的版本。 | 
| `WorkflowTypeName` | 將資料篩選為此工作流程執行的工作流程類型名稱。 | 
| `WorkflowTypeVersion` | 將資料篩選為此工作流程執行的工作流程類型版本。 | 
| `APIName` | 將資料篩選為指定之 API 名稱的 API。 | 
| `DecisionName` | 將資料篩選為所指定的決策名稱。 | 
| `TaskListName` | 將資料篩選為所指定的任務清單名稱。 | 
| `TaskListClassification` | 篩選資料至任務清單的分類。決策任務清單的值為「D」，活動任務清單的值為「A」。 | 
| `ThrottlingScope` | 將資料篩選至指定的限流範圍。超過帳戶層級配額時的值為「帳戶」，超過工作流程層級配額時的值為「工作流程」。 | 

## Amazon SWF 非 ASCII 資源名稱和 CloudWatch 維度
<a name="cloudwatch-swf-non-ascii"></a>

Amazon SWF 允許資源名稱中的非 ASCII 字元，例如 TaskList 和 DomainName。不過，CloudWatch 指標的維度值只能包含可列印的 ASCII 字元。為了確保 Amazon SWF 使用與 [CloudWatch 要求](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Dimension.html)相容的維度值，會轉換不符合這些要求的 Amazon SWF 資源名稱，並附加檢查總和，如下所示：
+ 任何非 ASCII 字元都會取代為 `?`。
+ 輸入字串或轉換後的字串將視需要截斷。這可確保附加檢查總和時，新的字串長度不會超過 CloudWatch 上限。
+ 由於任何非 ASCII 字元都會轉換為 `?`，因此一些轉換前不同的 CloudWatch 指標維度值在轉換後可能看起來相同。為了協助區分它們，原始資源名稱 SHA256 檢查總和的前 16 個字元後面加上底線 (`_`) 會附加至資源名稱。

轉換範例：
+ `test àpple` 會轉換為 `test ?pple_82cc5b8e3a771d12`
+ `àòà` 會轉換為 `???_2fec5edbb2c05c22`。
+ TaskList 名稱 `àpplé`和 `âpplè`都會轉換為 `?ppl?`，並且會是相同的。附加檢查總和會傳回不同的值，`?ppl?_f39a36df9d85a69d`以及 `?ppl?_da3efb4f11dd0f7f`。

**提示**  
您可以產生自己的 SHA256 檢查總和。例如，若要使用`shasum`命令列工具：  
 **echo -n "<the original resource name>" \| shasum -a 256 \| cut -c1-16** 