30分钟前使用AWS CloudWatch指标数学和累积指标的值来显示变化率

时间:2018-10-23 14:39:52

标签: amazon-web-services metrics amazon-cloudwatch

我有一个AWS CloudWatch自定义指标,该指标代表一个不断增加的累积值。我会将指标添加到仪表板,但我也想显示该指标在过去30分钟内的变化率。理想情况下,我希望有一个函数返回30分钟前的指标值并将其从当前值中减去。 “ Rate()”函数似乎没有帮助。

我可以使用未来30分钟的时间戳第二次提交指标值,然后减去这两个指标,但是我希望找到一个使用指标数学并且不强迫我提交另一个指标的解决方案。我可以想到其他一些用例,在这些用例中我可能想对来自不同时间段的指标进行数学运算。 希望我在这里只是想念一些东西!

2 个答案:

答案 0 :(得分:2)

您可以使用某种算法来获取先前的值,然后可以根据需要计算变化百分比。

您想要的值是:(value_now - value_before) / value_before

将其分为两部分:

  1. 获取value_now - value_before。这是值的绝对增量
  2. 获取value_before。这是最后一个数据点中指标的值。

假设您在Cloudwatch中的指标为m

步骤1:绝对增量

absolute_delta可以通过以下方式获得:absolute_delta = RATE(m) * PERIOD(m)

步骤2:上一个值

通过一些算术运算可以获得previous_value。给定绝对增量的定义:

absolute_delta = value_now - value_before

由于我们有value_now = mabsolute_delta,因此只需对方程求逆即可。

value_before = value_now - absolute_delta

最终方程

只需将所有内容连接在一起,便拥有了最终指标:

change_percentage = 100 * absolute_delta / value_before

用CloudWatch术语:

cloudwatch metrics definition

答案 1 :(得分:0)

公制数学函数RATE()计算每秒的变化率。

  

每秒返回度量标准的变化率。计算方法为最新数据点值与先前数据点值之差除以两个值之间的时间差(以秒为单位)。

来自https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html

因此,要获取您期间的变化率,可以执行以下操作:

RATE(m1)*PERIOD(m1)

并将仪表板的时间段设置为所需值。

您遇到的问题是您需要30分钟的时间,但我认为您不能在CloudWatch仪表板上设置30分钟作为时间。最接近的值为15分钟或1小时。