

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 的亚马逊 SWF 指标 CloudWatch
<a name="cw-metrics"></a>

Amazon SWF 现在提供了指标 CloudWatch ，您可以使用这些指标来跟踪您的工作流程和活动，并根据您选择的阈值设置警报。您可以使用查看指标 AWS 管理控制台。有关更多信息，请参阅 [查看亚马逊 SWF 指标以使用 CloudWatch 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>

Amazon SWF 的某些指标 CloudWatch 是*时间间隔*，始终以毫秒为单位。该 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 并不表示未报告该指标，仅表示该指标描述的条件未出现。

该报告的某些 Amazon SWF 指标为 CloudWatch *每 CloudWatch 秒计数*。`Count`例如`ProvisionedRefillRate`，报告为 a `Count` in CloudWatch，表示每秒请求`Count`的*速率*。

对于计数指标，最小值和最大值将始终是 0 或 1，但平均值将是 0 到 1 范围内的一个值。

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

 您可以在中监控 API 和决策事件 CloudWatch ，以深入了解您的使用情况和容量。请参阅 [Amazon SWF 中的基本工作流程概念](swf-dg-basic.md) 部分中的 [deciders](swf-dev-actors.md#swf-dev-actors-deciders)，以及 [Amazon Simple Workflow Service API Reference](https://docs.aws.amazon.com/amazonswf/latest/apireference/) 中的 [Decision](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)。

作为最佳实践，您应在 API 或决策事件容量的 60% 左右配置 CloudWatch 警报。这让您可以在启用 Amazon SWF 节流之前调整工作流或请求增加服务限制。根据您的调用的 [burstiness](https://en.wikipedia.org/wiki/Burstiness)，您可以配置不同警报，以便在接近您的服务限制时发出通知：
+ 如果您的流量有明显的峰值，请将警报设置为 `ProvisionedBucketSize` 限制的 60%。
+ 如果您的调用具有相对稳定的速率，请将相关 API 和决策事件的警报设置为 `ProvisionedRefillRate` 限制的 60%。

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

Amazon SWF 提供以下指标：


|  指标  |  说明  | 
| --- | --- | 
|  `DecisionTaskScheduleToStartTime`  |  计划决策任务的时刻与工作人员选取并启动该决策任务的时刻之间的时间间隔，以毫秒为单位。 CloudWatch 单位：`Time` 维度：`Domain, WorkflowTypeName, WorkflowTypeVersion` 有效统计数据：`Average, Minimum, Maximum`  | 
|  `DecisionTaskStartToCloseTime`  |  启动活动任务的时刻与决策任务结束的时刻之间的时间间隔，以毫秒为单位。 CloudWatch 单位：`Time` 维度：`Domain, WorkflowTypeName, WorkflowTypeVersion` 有效统计数据：`Average, Minimum, Maximum`  | 
|  `DecisionTasksCompleted`  |  已完成的决策任务的计数。 CloudWatch 单位：`Count` 维度：`Domain, WorkflowTypeName, WorkflowTypeVersion` 有效统计数据：`Sum`  | 
| PendingTasks | 针对某个特定任务列表在 1 分钟间隔内待办任务的计数。 CloudWatch 单位：`Count` 维度：`Domain, TaskListName` 有效统计数据：`Sum` | 
|  `StartedDecisionTasksTimedOutOnClose`  |  已启动但在结束时已超时的决策任务的计数。 CloudWatch 单位：`Count` 维度：`Domain, WorkflowTypeName, WorkflowTypeVersion` 有效统计数据：`Sum`  | 
|  `WorkflowStartToCloseTime`  |  启动工作流的时刻与工作流结束的时刻之间的时间，以毫秒为单位。 CloudWatch 单位：`Time` 维度：`Domain, WorkflowTypeName, WorkflowTypeVersion` 有效统计数据：`Average, Minimum, Maximum`  | 
|  `WorkflowsCanceled`  |  取消的工作流程的计数。 CloudWatch 单位：`Count` 维度：`Domain, WorkflowTypeName, WorkflowTypeVersion` 有效统计数据：`Sum`  | 
|  `WorkflowsCompleted`  |  完成的工作流程的计数。 CloudWatch 单位：`Count` 维度：`Domain, WorkflowTypeName, WorkflowTypeVersion` 有效统计数据：`Sum`  | 
|  `WorkflowsContinuedAsNew`  |  继续作为新工作流程的工作流程计数。 CloudWatch 单位：`Count` 维度：`Domain, WorkflowTypeName, WorkflowTypeVersion` 有效统计数据：`Sum`  | 
|  `WorkflowsFailed`  |  失败的工作流的计数。 CloudWatch 单位：`Count` 维度：`Domain, WorkflowTypeName, WorkflowTypeVersion` 有效统计数据：`Sum`  | 
|  `WorkflowsTerminated`  |  终止的工作流的计数。 CloudWatch 单位：`Count` 维度：`Cause, Domain, WorkflowTypeName, WorkflowTypeVersion` 有效统计数据：`Sum`  | 
|  `WorkflowsTimedOut`  |  出于任何原因而超时的工作流程的计数。 CloudWatch 单位：`Count` 维度：`Domain, WorkflowTypeName, WorkflowTypeVersion` 有效统计数据：`Sum`  | 
|  `ActivityTaskScheduleToCloseTime`  |  计划活动的时刻与该活动结束的时刻之间的时间间隔，以毫秒为单位。 CloudWatch 单位：`Time` 维度：`Domain, ActivityTypeName, ActivityTypeVersion` 有效统计数据：`Average, Minimum, Maximum`  | 
|  `ActivityTaskScheduleToStartTime`  |  计划活动任务的时刻与该活动任务启动的时刻之间的时间间隔，以毫秒为单位。 CloudWatch 单位：`Time` 维度：`Domain, ActivityTypeName, ActivityTypeVersion` 有效统计数据：`Average, Minimum, Maximum`  | 
|  `ActivityTaskStartToCloseTime`  |  启动活动任务的时刻与活动任务结束的时刻之间的时间间隔，以毫秒为单位。 CloudWatch 单位：`Time` 维度：`Domain, ActivityTypeName, ActivityTypeVersion` 有效统计数据：`Average, Minimum, Maximum`  | 
|  `ActivityTasksCanceled`  |  取消的活动任务的计数。 CloudWatch 单位：`Count` 维度：`Domain, ActivityTypeName, ActivityTypeVersion` 有效统计数据：`Sum`  | 
|  `ActivityTasksCompleted`  |  已完成的活动任务的计数。 CloudWatch 单位：`Count` 维度：`Domain, ActivityTypeName, ActivityTypeVersion` 有效统计数据：`Sum`  | 
|  `ActivityTasksFailed`  |  失败的活动任务的计数。 CloudWatch 单位：`Count` 维度：`Domain, ActivityTypeName, ActivityTypeVersion` 有效统计数据：`Sum`  | 
|  `ScheduledActivityTasksTimedOutOnClose`  |  已计划但在结束时已超时的活动任务的计数。 CloudWatch 单位：`Count` 维度：`Domain, ActivityTypeName, ActivityTypeVersion` 有效统计数据：`Sum`  | 
|  `ScheduledActivityTasksTimedOutOnStart`  |  已计划但在启动时已超时的活动任务的计数。 CloudWatch 单位：`Count` 维度：`Domain, ActivityTypeName, ActivityTypeVersion` 有效统计数据：`Sum`  | 
|  `StartedActivityTasksTimedOutOnClose`  |  已启动但在结束时已超时的活动任务的计数。 CloudWatch 单位：`Count` 维度：`Domain, ActivityTypeName, ActivityTypeVersion` 有效统计数据：`Sum`  | 
|  `StartedActivityTasksTimedOutOnHeartbeat`  |  已启动但因检测信号超时而发生超时的活动任务的计数。 CloudWatch 单位：`Count` 维度：`Domain, ActivityTypeName, ActivityTypeVersion` 有效统计数据：`Sum`  | 
|  `ThrottledEvents`  |  已被限制的请求的计数。 CloudWatch 单位：`Count` 维度：`APIName, DecisionName, ThrottlingScope` 有效统计数据：`Sum`  | 
|  `ProvisionedBucketSize`  |  每秒可用请求的计数。 维度：`APIName, DecisionName` 有效统计数据：`Minimum`  | 
|  `ConsumedCapacity`  | 每秒请求的计数。 CloudWatch 单位：`Count` 维度：`APIName, DecisionName` 有效统计数据：`Sum`  | 
| ConsumedLimit | 已使用的一般限额。 维度：`GeneralLimitType` | 
|  `ProvisionedRefillRate`  |  每秒允许进入存储桶中的请求的计数。 维度：`APIName, DecisionName` 有效统计数据：`Minimum`  | 
| ProvisionedLimit | 为账户预置的一般限额。 维度：`GeneralLimitType` | 


|  维度  |  说明  | 
| --- | --- | 
|  `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>" \$1 shasum -a 256 \$1 cut -c1-16** 