AWS Cloudwatch 指标的累计总和

Cumulative sum of AWS Cloudwatch Metric

每次我开始图像下载时,AWS Cloudwatch 都会收到 1 的计数。我正在下载 1,000 多张图像(在 EC2 实例集群上)并希望跟踪总进度。

我找不到任何关于如何绘制指标的累积和的文档。 AWS Cloudwatch 数学表达式看起来很有前途,但它们没有集成函数。

目前,我可以绘制开始图像下载的总和,但仅限于一段时间,如下所示。理想情况下,我想绘制此图的积分:

你是对的。所有 Amazon CloudWatch 指标都是针对 定义的时间段

指标的最大周期是一天,所以这不适合table累积计数器您希望继续超过一天。

您需要找到另一种存储计数的方法,例如 Amazon DynamoDB table。通过 UpdateItem 使用原子计数器来增加计数。

您可以使用 SUM() 函数在仅包含数字一 (1) 的原始范围内运行,从而获得当前范围内的累计和。请记住,您最终要寻找的是单个数字,因此它不是一个图形,但您需要将单个值的总和转回时间序列。

  • m1 定义为您的指标。这是您要使用的指标 SUM()
  • 将表达式 e1 定义为 m1/m1。这导致每个值都等于 1 的时间序列。这就是允许您将该 SUM 转换回时间序列的原因。
  • 将表达式 e2 定义为 SUM(m1) / e1。这实际上是原始时间序列中每个数据点的 m1 的累积总和除以 1。它将是图表上的一条水平线,该水平线上的每个点都是指标 m1 的累积和。这是必需的,因为 Cloudwatch 只能在图表上绘制时间序列,而不是单个值。
  • 使 m1e1 不可见。你需要它们,但你不需要看到它们。
  • 最后,将图表类型从 Line 更改为 Number,因为无论如何您只需要累计总和。

不能直接使用 SUM() 的原因是因为它是单个值。通过除以包含全 1 的时间序列,整个图就是 SUM() 的结果。然后,将图表更改为数字有效地隐藏了所有数学运算并仅显示“最终结果”。

你也可以用很长的周期

将您的统计数据更改为 SUM,并将您的指标周期设置为 7 days。您将获得一个 1 点的时间序列,其中包含所有下载的累计总和。

如果您为每次下载赋予唯一的维度值,则可以将您的查询分开。

看起来 RUNNING_SUM() 已添加,可以满足您的需要:

Graph with RUNNING_SUM

您可以在“添加数学”->“所有函数”下找到 RUNNING_SUM()