我有一个AWS CloudWatch自定义指标,该指标代表一个不断增加的累积值。我会将指标添加到仪表板,但我也想显示该指标在过去30分钟内的变化率。理想情况下,我希望有一个函数返回30分钟前的指标值并将其从当前值中减去。 “ Rate()”函数似乎没有帮助。
我可以使用未来30分钟的时间戳第二次提交指标值,然后减去这两个指标,但是我希望找到一个使用指标数学并且不强迫我提交另一个指标的解决方案。我可以想到其他一些用例,在这些用例中我可能想对来自不同时间段的指标进行数学运算。 希望我在这里只是想念一些东西!
答案 0 :(得分:2)
您可以使用某种算法来获取先前的值,然后可以根据需要计算变化百分比。
您想要的值是:(value_now - value_before) / value_before
将其分为两部分:
value_now - value_before
。这是值的绝对增量。value_before
。这是最后一个数据点中指标的值。假设您在Cloudwatch中的指标为m
。
absolute_delta
可以通过以下方式获得:absolute_delta = RATE(m) * PERIOD(m)
。
通过一些算术运算可以获得previous_value
。给定绝对增量的定义:
absolute_delta = value_now - value_before
由于我们有value_now = m
和absolute_delta
,因此只需对方程求逆即可。
value_before = value_now - absolute_delta
只需将所有内容连接在一起,便拥有了最终指标:
change_percentage = 100 * absolute_delta / value_before
答案 1 :(得分:0)
公制数学函数RATE()
计算每秒的变化率。
每秒返回度量标准的变化率。计算方法为最新数据点值与先前数据点值之差除以两个值之间的时间差(以秒为单位)。
来自https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html
因此,要获取您期间的变化率,可以执行以下操作:
RATE(m1)*PERIOD(m1)
并将仪表板的时间段设置为所需值。
您遇到的问题是您需要30分钟的时间,但我认为您不能在CloudWatch仪表板上设置30分钟作为时间。最接近的值为15分钟或1小时。