使用亚马逊监控 Step Functions 指标 CloudWatch - AWS Step Functions

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

使用亚马逊监控 Step Functions 指标 CloudWatch

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

在开始监控 Step Functions 之前,您应创建一个监控计划,回答以下问题:

  • 监控目的是什么?

  • 您将监控哪些资源?

  • 监控这些资源的频率如何?

  • 您将使用哪些监控工具?

  • 谁负责执行监控任务?

  • 出现错误时应通知谁?

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

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

要建立基准,您至少应监控以下指标:

  • ExecutionsStarted

  • ExecutionsTimedOut

  • 可选(如果您使用活动)-ActivitiesStarted

  • 可选(如果您使用活动)-ActivitiesTimedOut

的 Step Functions 指标的类型 CloudWatch

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

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

非 ASCII 名称和日志记录

Step Functions 对于状态机、执行、活动和标签接受包含非 ASCII 字符的名称。由于此类字符会 CloudWatch 阻止亚马逊记录数据,因此我们建议您仅使用 ASCII 字符,这样您就可以跟踪 Step Functions 的指标。

CloudWatch 指标交付

系统将以最大努力传输 CloudWatch 指标。

无法保证指标的完整性和及时性。可能返回特定请求的数据点,其时间戳晚于实际处理请求的时间。数据点在通过之前可能会延迟一分钟 CloudWatch,或者可能根本无法传送。 CloudWatch请求指标可以让你近乎实时地了解状态机的执行情况。这并不代表会完整记录所有与执行相关的指标。

根据此特征的最大努力性质,在账单和成本管理控制面板提供的报告中可能有一个或多个访问请求不会出现在执行指标中。

报告时间间隔的指标

Step Functions 的某些 Step Function CloudWatch s 指标是时间间隔,始终以毫秒为单位进行测量。这些指标通常对应于可以设置状态机、活动和 Lambda 函数超时的执行的各个阶段,并且带有说明性名称。

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

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

报告计数的指标

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

值得注意的是,Step Functions 为每个状态机执行发出两个 ExecutionsStarted 指标。因此,该ExecutionsStarted指标的SampleCount统计数据将显示每次执行状态机的值为 2。 SampleCount 统计数据显示ExecutionStarted=1,然后ExecutionStarted=0在执行完成之后。

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

提示

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

在中查看 Step Functions 指标 CloudWatch

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

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

  2. 选择指标,在全部指标选项卡上选择状态

    如果您近期运行了任何执行,最多可以看到四种类型的指标:

    • 执行指标

    • 活动函数指标

    • Lambda 函数指标

    • 服务集成指标

  3. 选择指标类型以查看指标列表。

    • 要查看指标图表,请选中列表上指标旁边的复选框。您可以使用图表视图上方的时间范围控件更改图表参数。

      您可以使用相对或绝对值 (特定天和时间) 选择自定义时间范围。您还可以使用下拉列表将值显示为线条、堆叠区域或数字(值)。

    • 要查看有关图表的详细信息,请悬停在图表下方显示的指标颜色代码上,以显示指标详细信息。

有关使用 CloudWatch 指标的更多信息,请参阅亚马逊 CloudWatch 用户指南中的使用亚马逊 CloudWatch 指标

在中为 Step Functions 指标设置警报 CloudWatch

您可以使用 Amazon CloudWatch 警报来执行操作。例如,如果您希望知道何时达到警报阈值,您可以设置警报以发送通知到 Amazon SNS 主题,或者在 StateMachinesFailed 指标上升到超过特定阈值时发送电子邮件。

在指标上设置警报

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

  2. 选择一个或多个要查看的指标,然后选择图形化指标。

  3. 选择列表中某个指标旁边的钟形图标,以显示创建警报页面。

  4. 警报阈值操作输入值,然后选择创建警报

有关设置和使用 CloudWatch 警报的更多信息,请参阅亚马逊 CloudWatch 用户指南中的创建亚马逊 CloudWatch 警报

账户级别的使用量指标

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

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

指标 说明
StateMachineCount

您账户中当前处于活动状态机的数量。您可能需要在账户中添加或删除状态机,然后等待几分钟才能为您的账户激活此指标。

ActivityCount

您账户中当前活跃的活动计数。您可能需要在账户中添加或删除一项活动,然后等待几分钟才能为您的账户激活该指标。

OpenExecutionCountPerStateMachine

打开您账户中每台状态机的执行次数。

执行指标

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

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

指标 说明
OpenExecutionCount

当前打开的执行 的大致数量,即您的账户中当前正在进行的工作流程数量。

目的是深入了解您的工作流程何时接近最大执行限制,以避免在调用StartExecution或使用标准工作流程时RedriveExecutionExecutionLimitExceeded错。

OpenExecutionCount 是打开的工作流程的大致数量。该指标将低于观测到的正在运行的工作流程计数。如果正在运行的打开的工作流程计数低于 10000,则可能显示打开的执行数量为零。为了在接近 OpenExecutionLimit 时发出警报,建议使用阈值为 100K 或更高的最大值统计数据,因为默认的打开的工作流限制为 100 万个执行。

OpenExecutionLimit

打开的执行的最大数量。有关更多信息,请参阅 与账户相关的配额

此限制不适用于快速工作流程。

所有状态机的执行指标

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

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

账户级别指标

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

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

快速工作流的执行指标

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

账户级别指标

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

指标 说明
ExpressExecutionBilledDuration

快速工作流的收费时长。

ExpressExecutionBilledMemory

快速工作流程收费的内存消耗量。

ExpressExecutionMemory

特定 Express 工作流程消耗的总内存。

标准工作流的Redrive执行指标

redrive执行状态机时,Step Functions 会发出以下指标。

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

指标 说明
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 Map Run 的以下指标。这些是适用于某个区域中您的账户的无维度指标。

指标 说明
ApproximateOpenMapRunCount

您账户中当前打开的 Map Run 的大致数量。

有了这个指标,你可以在接近时采取行动 OpenMapRunLimit,以避免积压的 Map Runs。

要在您接近时发出警报 OpenMapRunLimit,我们建议使用阈值为 900 或更高的上统计数据,因为默认值OpenManRunLimit为 1,000 次地图。

OpenMapRunLimit

打开的 Map Run 的最大数量。

有关更多信息,请参阅 与账户相关的配额

ApproximateMapRunBacklogSize

积压的 Map Run 的大致数量。积压的地图跑步将在MapRunStarted活动开始时等待,直到打开的地图跑步总数少于配额。

当 Map Run 积压时,项目数将为零。在 Map Run 打开并开始读取其输入后,计数将增加。

版本和别名指标

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 命名空间包括以下 Lambda 函数的指标,这些指标在 Task 状态定义的资源字段中直接引用。您可能会在旧版状态机中找到这些指标。在现代状态机中,建议使用经优化的 Lambda 集成,它会发出服务集成指标。

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

Step Functions Lambda 函数指标维度

维度 说明
LambdaFunctionArn

Lambda 函数的 ARN。

注意

对于在 Resource 字段中指定 Lambda 函数 ARN 的 Task 状态,会发出 Lambda 函数指标。而使用 "Resource": "arn:aws:states:::lambda:invoke" 的 Task 状态会发出服务集成指标。有关更多信息,请参阅 使用 Step F AWS Lambda unctions 调用函数

服务集成指标

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

每秒请求的计数。

ProvisionedBucketSize

每秒可用请求的计数。

ProvisionedRefillRate

每秒可进入存储桶中的请求的计数。

ThrottledEvents

已被限制的请求的计数。

Step Functions 服务指标的维度

维度 说明
ServiceMetric

筛选要显示的数据 StateTransition。

StateMachineArn

筛选数据以显示特定状态机的过渡。

API 使用情况指标

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

指标 说明
ThrottledEvents

已被限制的请求的计数。

ProvisionedBucketSize

每秒可用请求的计数。

ProvisionedRefillRate

每秒可进入存储桶中的请求的计数。

ConsumedCapacity

每秒请求的计数。

Step Functions API 指标的维度

维度 说明
APIName

按照指定 API 名称的 API 来筛选数据。