

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

# 使用亚马逊监控 Step Functions 指标 CloudWatch
<a name="procedure-cw-metrics"></a>

监控是维护 AWS 解决方案的可靠性、可用性和性能的重要组成部分。 AWS Step Functions 您可以从用于调试多点故障的 AWS 服务中收集数据。

在开始监控 Step Functions 之前，您应创建一个监控计划，回答以下问题：
+ 监控目的是什么？
+ 您将监控哪些资源？
+ 监控这些资源的频率如何？
+ 您将使用哪些监控工具？
+ 谁负责执行监控任务？
+ 出现错误时应通知谁？

下一步是为您的环境中的正常 性能设置基准。为此，在不同时间和不同负载条件下测量性能。监控 Step Functions 时，请考虑存储历史监控数据。此类数据可为您提供与当前性能数据进行比较的基准，用于确定正常性能模式和性能异常，以及设计解决问题的方法。

建议您监控活动和任务失败数据以建立基准。当性能偏离基准指标时，设置警报以便排查根本原因。

要建立基准，您至少应监控以下指标：
+  `ExecutionsStarted` 
+  `ExecutionsTimedOut` 
+  *可选*（如果您使用活动）-`ActivitiesStarted` 
+  *可选*（如果您使用活动）-`ActivitiesTimedOut` 

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

Step Functions 向亚马逊提供以下类型的指标 CloudWatch。您可以使用这些指标来跟踪状态机和活动，以及设置有关阈值的警报。您可以使用查看指标 AWS 管理控制台。

指标按*命名空间*（ CloudWatch 指标容器）进行分组，这样来自不同应用程序的指标就不会被错误地聚合在一起。

**非 ASCII 名称和日志记录**  
Step Functions 对于状态机、执行、活动和标签接受包含非 ASCII 字符的名称。由于此类字符会 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 的某些 Step Function CloudWatch s 指标是*时间间隔*，始终以毫秒为单位进行测量。这些指标通常对应于可以设置状态机、活动和 Lambda 函数超时的执行的各个阶段，并且带有说明性名称。

例如，`ActivityRunTime` 指标测量活动在开始执行后，完成活动所需的时间。您可以为同一个时段设置超时值。

在 CloudWatch 控制台中，如果选择**平均值**作为时间间隔指标的显示统计数据，则可以获得最佳结果。

### 报告计数的指标
<a name="monitoring-using-cloudwatch-count-metrics"></a>

某些 Step Function CloudWatch s 指标将结果报告为*计数*。例如，`ExecutionsFailed` 记录失败的状态机执行次数。

值得注意的是，Step Functions 为每个状态机执行发出**两个** `ExecutionsStarted` 指标。因此，该`ExecutionsStarted`指标的[SampleCount](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html)统计数据将显示每次执行状态机的值为 **2**。 SampleCount 统计数据显示`ExecutionStarted=1`，然后`ExecutionStarted=0`在执行完成之后。

同样，由于指标的尽力交付，其他执行状态指标可能会多次发出。 at-least-once CloudWatch

**提示**  
对于在 CloudWatch 控制台中报告计数的指标，我们建议使用 **Sum** 作为显示统计数据。

## 在中查看 Step Functions 指标 CloudWatch
<a name="monitoring-using-cloudwatch-console"></a>

您可以使用 CloudWatch 控制台查看执行、活动、函数和服务集成的 Step Functions 指标。

1. 登录 AWS 管理控制台 并打开 CloudWatch 控制台。

1. 选择**指标**，在**全部指标**选项卡上选择**状态**。

   如果您近期运行了任何执行，最多可以看到四种类型的指标：
   +  **执行指标** 
   +  **活动函数指标** 
   +  **Lambda 函数指标** 
   +  **服务集成指标** 

1. 选择指标类型以查看指标列表。
   + 要查看指标图表，请选中列表上指标旁边的复选框。您可以使用图表视图上方的时间范围控件更改图表参数。

     您可以使用相对或绝对值 (特定天和时间) 选择自定义时间范围。您还可以使用下拉列表将值显示为线条、堆叠区域或数字（值）。
   + 要查看有关图表的详细信息，请悬停在图表下方显示的指标颜色代码上，以显示指标详细信息。

有关使用 CloudWatch 指标的更多信息，请参阅[亚马逊* CloudWatch 用户指南中的使用亚马逊 CloudWatch *指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/working_with_metrics.html)。

## 在中为 Step Functions 指标设置警报 CloudWatch
<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. 为**警报阈值**和**操作**输入值，然后选择**创建警报**。

有关设置和使用 CloudWatch 警报的更多信息，请参阅[亚马逊* CloudWatch 用户指南中的创建亚马逊 CloudWatch *警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/AlarmThatSendsEmail.html)。

## 账户级别的使用量指标
<a name="cloudwatch-step-functions-account-metrics"></a>

`AWS/Usage`命名空间包括以下 Step Functions 指标。

以下指标是无维度的，适用于您在某个地区的账户。


| 指标 | 说明 | 
| --- | --- | 
| StateMachineCount | 您账户中当前处于活动状态机的数量。您可能需要在账户中添加或删除状态机，然后等待几分钟才能为您的账户激活此指标。 | 
| ActivityCount | 您账户中当前活跃的活动计数。您可能需要在账户中添加或删除一项活动，然后等待几分钟才能为您的账户激活该指标。 | 
| OpenExecutionCountPerStateMachine | 打开您账户中每台状态机的执行次数。 | 

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

`AWS/States` 命名空间包括所有 Step Functions 执行的以下指标。

以下指标是无维度的，适用于您在某个地区的账户。


| 指标 | 说明 | 
| --- | --- | 
| OpenExecutionCount | 当前*打开的执行* 的大致数量，即您的账户中当前正在进行的工作流程数量。<br />目的是深入了解您的工作流程何时接近**最大**执行限制，以避免在调用`StartExecution`或使用标准工作流程时`RedriveExecution`出**ExecutionLimitExceeded**错。<br />`OpenExecutionCount` 是打开的工作流程的大致数量。该指标将低于观测到的正在运行的工作流程计数。如果正在运行的打开的工作流程计数低于 10000，则可能显示打开的执行数量为零。为了在接近 `OpenExecutionLimit` 时发出警报，建议使用阈值为 100K 或更高的[最大值](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html)统计数据，因为默认的打开的工作流限制为 100 万个执行。 | 
| OpenExecutionLimit | 打开的执行的最大数量。有关更多信息，请参阅 [与账户相关的配额](service-quotas.md#service-limits-accounts)。<br /> *此限制不适用于快速工作流程。* | 

### 所有状态机的执行指标
<a name="cloudwatch-step-functions-execution-metrics-version-alias"></a>

所有状态机都会发出指标。只有在执行受到限制的情况下，才会发出 `ExecutionThrottled` 指标。

可以使用筛选以下指标`StateMachineArn`以识别特定的状态机。

**账户级别指标**  
如果没有状态机 ARN，则以下指标将在**账户**级别报告。提供状态机 ARN 以在状态机级别进行报告。


| 指标 | 说明 | 
| --- | --- | 
| ExecutionsAborted | 已中止或终止的执行的数量。 | 
| ExecutionsFailed | 已失败的执行的数量。 | 
| ExecutionsStarted | 已启动的执行的数量。 | 
| ExecutionsSucceeded | 成功完成的执行的数量。 | 
| ExecutionsTimedOut | 因任意原因超时的执行的数量。 | 
| ExecutionThrottled | 受到限制的 StateEntered 事件和重试的数量。这与 StateTransition 限制有关。有关更多信息，请参阅 [与状态限制相关的配额](service-quotas.md#service-limits-api-state-throttling)。 | 
| ExecutionTime | 执行开始时间与关闭时间之间的时间间隔（毫秒）。 | 

### 快速工作流的执行指标
<a name="cloudwatch-step-functions-execution-metrics-express-wf"></a>

`AWS/States` 命名空间包括 Step Functions 快速工作流执行的以下指标。

**账户级别指标**  
如果没有状态机 ARN，则`ExpressExecutionBilledDuration`和在**账户**级别`ExpressExecutionBilledMemory`报告。提供状态机 ARN 以在状态机级别进行报告。


| 指标 | 说明 | 
| --- | --- | 
| ExpressExecutionBilledDuration | 快速工作流的收费时长。 | 
| ExpressExecutionBilledMemory | 快速工作流程收费的内存消耗量。 | 
|  ExpressExecutionMemory  | 特定 Express 工作流程消耗的总内存。 | 

### 标准工作流的Redrive执行指标
<a name="cloudwatch-redrive-execution-metrics"></a>

[redrive](redrive-executions.md)执行状态机时，Step Functions 会发出以下指标。

对于所有redriven执行，都会发出 `Executions*` 指标。例如，假设redriven执行中止。该执行将同时发出 `RedrivenExecutionsAborted` 和 `ExecutionsAborted` 的非零数据点。


| 指标 | 说明 | 
| --- | --- | 
| ExecutionsRedriven | redriven执行的数量。 | 
| RedrivenExecutionsAborted | 取消或终止的redriven执行的数量。 | 
| RedrivenExecutionsTimedOut | 因任意原因超时的redriven执行的数量。 | 
| RedrivenExecutionsSucceeded | 成功完成的redriven执行的数量。 | 
| RedrivenExecutionsFailed | 失败的redriven执行的数量。 | 

### Step Functions 执行指标的维度
<a name="cloudwatch-step-functions-execution-metrics-dimensions"></a>


| 维度 | 说明 | 
| --- | --- | 
|  StateMachineArn  | 所涉执行的状态机的 Amazon 资源名称 (ARN)。 | 

### 使用版本的执行维度
<a name="cloudwatch-setp-functions-version-metrics-dimensions"></a>


| 维度 | 说明 | 
| --- | --- | 
|  StateMachineArn  | 由[版本](concepts-state-machine-version.md)启动执行的状态机的 Amazon 资源名称 (ARN)。 | 
| Version | 用于启动执行的状态机版本。 | 

### 使用别名的执行维度
<a name="cloudwatch-setp-functions-alias-metrics-dimensions"></a>


| 维度 | 说明 | 
| --- | --- | 
|  StateMachineArn  | 由[别名](concepts-state-machine-alias.md)启动执行的状态机的 Amazon 资源名称 (ARN)。 | 
| Alias | 用于启动执行的状态机别名。 | 

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

`AWS/States` 命名空间包括所有 Step Functions Map Run 的以下指标。这些是适用于某个区域中您的账户的无维度指标。


| 指标 | 说明 | 
| --- | --- | 
| ApproximateOpenMapRunCount | 您账户中当前打开的 Map Run 的大致数量。<br />有了这个指标，你可以在接近时采取行动 **OpenMapRunLimit**，以避免积压的 Map Runs。<br />要在您接近时发出警报 **OpenMapRunLimit**，我们建议使用阈值为 900 或更高的上**限**统计数据，因为默认值**OpenManRunLimit**为 1,000 次地图。 | 
| OpenMapRunLimit | 打开的 Map Run 的最大数量。<br />有关更多信息，请参阅 [与账户相关的配额](service-quotas.md#service-limits-accounts)。 | 
| ApproximateMapRunBacklogSize | **积压的 [Map Run](concepts-examine-map-run.md) 的大致数量。积压的地图跑步将在[MapRunStarted](https://docs.aws.amazon.com/step-functions/latest/apireference/API_MapRunStartedEventDetails.html)活动开始时等待，直到打开的地图跑步总数少于配额。<br />当 Map Run 积压时，项目数将为零。在 Map Run 打开并开始读取其输入后，计数将增加。 | 

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

`AWS/States`命名空间包括以下状态机版本和别名计数的指标。


| 指标 | 说明 | 
| --- | --- | 
| AliasCount | 为状态机创建的[别名](concepts-state-machine-alias.md)数。<br />您最多可以为每个状态机[创建](concepts-state-machine-alias.md#procedure-create-aliases) 100 个别名。 | 
| VersionCount | 为状态机发布的[版本](concepts-state-machine-version.md)数。<br />您最多可以[发布](concepts-state-machine-version.md#procedure-create-versions) 1000 个版本的状态机。 | 

### 版本与别名功能的资源计数指标维度
<a name="resource-count-metrics-alias-versions-dimensions"></a>


| 维度 | 说明 | 
| --- | --- | 
|  ResourceArn  | 使用别名或版本的状态机的 Amazon 资源名称 (ARN)。 | 

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

`AWS/States` 命名空间包括 Step Functions 活动的以下指标。

**账户级别指标**  
如果没有状态机 ARN，则以下指标将在**账户**级别报告。提供状态机 ARN 以在状态机级别进行报告。


| 指标 | 说明 | 
| --- | --- | 
| ActivitiesFailed | 失败活动的数量。 | 
| ActivitiesHeartbeatTimedOut | 因检测信号超时而超时的活动的数量。 | 
| ActivitiesScheduled | 计划活动的数量。 | 
| ActivitiesStarted | 已启动的活动的数量。 | 
| ActivitiesSucceeded | 成功完成的活动的数量。 | 
| ActivitiesTimedOut | 关闭时超时的活动的数量。 | 
| ActivityRunTime  | 活动开始时间与关闭时间之间的时间间隔（毫秒）。 | 
| ActivityScheduleTime | 活动保持在计划状态的时间间隔（毫秒）。 | 
| ActivityTime | 活动计划时间与关闭时间之间的时间间隔（毫秒）。 | 

### Step Functions 活动指标维度
<a name="cloudwatch-step-functions-activity-metrics-dimensions"></a>


| 维度 | 说明 | 
| --- | --- | 
| ActivityArn | 活动的 ARN。 | 

## Lambda 函数指标
<a name="cloudwatch-step-functions-lambda-function-metrics"></a>

`AWS/States` 命名空间包括以下 Lambda 函数的指标，这些指标在 Task 状态定义的资源字段中**直接**引用。您可能会在旧版状态机中找到这些指标。在现代状态机中，建议使用经优化的 Lambda 集成，它会发出服务集成指标。


|  指标  |  说明  | 
| --- | --- | 
| LambdaFunctionRunTime | Lambda 函数开始时间与关闭时间之间的时间间隔（毫秒）。 | 
| LambdaFunctionScheduleTime | Lambda 函数保持在计划状态的时间间隔（毫秒）。 | 
| LambdaFunctionTime | Lambda 函数计划时间与关闭时间之间的时间间隔（毫秒）。 | 
| LambdaFunctionsFailed | 已失败的 Lambda 函数的数量。 | 
| LambdaFunctionsScheduled | 已计划的 Lambda 函数的数量。 | 
| LambdaFunctionsStarted | 已启动的 Lambda 函数的数量。 | 
| LambdaFunctionsSucceeded | 成功完成的 Lambda 函数的数量。 | 
| LambdaFunctionsTimedOut | 关闭时超时的 Lambda 函数的数量。 | 

### Step Functions Lambda 函数指标维度
<a name="cloudwatch-step-functions-lambda-function-metrics-dimensions"></a>


|  维度  |  说明  | 
| --- | --- | 
| LambdaFunctionArn | Lambda 函数的 ARN。 | 

**注意**  
对于在 ` Resource` 字段中指定 Lambda 函数 ARN 的 Task 状态，会发出 Lambda 函数指标。而使用 `"Resource": "arn:aws:states:::lambda:invoke"` 的 Task 状态会发出服务集成指标。有关更多信息，请参阅 [调用 AWS Lambda 带有 Step Functions 的](connect-lambda.md)。

## 服务集成指标
<a name="cloudwatch-step-functions-service-integration-metrics"></a>

`AWS/States` 命名空间包括 Step Functions 服务集成的以下指标。有关更多信息，请参阅 [将服务与 Step Functions 集成](integrate-services.md)。


|  指标  |  说明  | 
| --- | --- | 
| ServiceIntegrationRunTime | 服务任务开始时间与关闭时间之间的时间间隔（毫秒）。 | 
| ServiceIntegrationScheduleTime | 服务任务保持在计划状态的时间间隔（毫秒）。 | 
| ServiceIntegrationTime | 服务任务计划时间与关闭时间之间的时间间隔（毫秒）。 | 
| ServiceIntegrationsFailed | 已失败的服务任务数。 | 
| ServiceIntegrationsScheduled | 计划的服务任务数。 | 
| ServiceIntegrationsStarted | 已启动的服务任务数。 | 
| ServiceIntegrationsSucceeded | 已成功完成的服务任务数。 | 
| ServiceIntegrationsTimedOut | 关闭时超时的服务任务数。 | 

### Step Functions 服务集成指标的维度
<a name="cloudwatch-step-functions-service-integration-metrics-dimensions"></a>


|  维度  |  说明  | 
| --- | --- | 
| ServiceIntegrationResourceArn | 集成服务的资源 ARN。 | 

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

`AWS/States`命名空间包括 Step Functions 服务指标的以下指标。

**账户级别指标**  
如果没有状态机 ARN，则以下指标将在**账户**级别报告。提供状态机 ARN 以在状态机级别进行报告。


| 指标 | 说明 | 
| --- | --- | 
| ConsumedCapacity | 每秒请求的计数。 | 
| ProvisionedBucketSize | 每秒可用请求的计数。 | 
| ProvisionedRefillRate | 每秒可进入存储桶中的请求的计数。 | 
| ThrottledEvents  | 已被限制的请求的计数。 | 

### Step Functions 服务指标的维度
<a name="cloudwatch-step-functions-service-metrics-dimensions"></a>


| 维度 | 说明 | 
| --- | --- | 
| ServiceMetric | 筛选要显示的数据 StateTransition。 | 
| StateMachineArn | 筛选数据以显示特定状态机的过渡。 | 

## API 使用情况指标
<a name="cloudwatch-step-functions-api-metrics"></a>

`AWS/States` 命名空间包括 Step Functions API 的以下指标。


| 指标 | 说明 | 
| --- | --- | 
| ThrottledEvents  | 已被限制的请求的计数。 | 
| ProvisionedBucketSize | 每秒可用请求的计数。 | 
| ProvisionedRefillRate | 每秒可进入存储桶中的请求的计数。 | 
| ConsumedCapacity | 每秒请求的计数。 | 

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


| 维度 | 说明 | 
| --- | --- | 
| APIName | 按照指定 API 名称的 API 来筛选数据。 | 