我想创建一个基于多个指标数据触发自动缩放的云监视警报。由于 Cloud Watch 本身不支持此功能(如果我错了,请纠正我)。我想知道如何克服这一点。
我们是否可以从不同的指标(例如 CPUUtilization、NetworkIn、NetworkOut)中获取数据,然后使用 mon-put-data 创建自定义指标并输入这些数据以创建新的指标以触发自动缩放?
我想创建一个基于多个指标数据触发自动缩放的云监视警报。由于 Cloud Watch 本身不支持此功能(如果我错了,请纠正我)。我想知道如何克服这一点。
我们是否可以从不同的指标(例如 CPUUtilization、NetworkIn、NetworkOut)中获取数据,然后使用 mon-put-data 创建自定义指标并输入这些数据以创建新的指标以触发自动缩放?
是的.. Cloudwatch 警报只能在单个 Cloudwatch 指标上触发,因此您需要根据自己的建议发布自己的“聚合”自定义指标和警报。
这是一篇博客文章,描述了使用自定义指标来触发自动缩放。
http://www.thatsgeeky.com/2012/01/autoscaling-with-custom-metrics/
您现在可以使用 CloudWatch Metric Math。
指标数学使您能够查询多个 CloudWatch 指标并使用数学表达式基于这些指标创建新的时间序列。您可以在 CloudWatch 控制台中可视化生成的时间序列并将它们添加到仪表板。
有关此处提供的度量数学语法和函数的更多信息: https ://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html#metric-math-syntax
但是,需要注意的是没有逻辑运算符,您必须使用算术函数才能退出。
为了帮助遇到问题的人,发布一个示例:假设您想在 CPUUtilization < 20% 和 MemoryUtilization < 30% 时触发警报。
m1 = Avg CPU Utilization % for 5mins
m2 = Avg Mem Utilization % for 5mins
然后:
Avg. CPU Utilization % < 20 for 5 mins AND Avg Mem Utilization % < 30 for 5mins ... (1)
和
(m1 - 20) / ABS([m1 - 20]) + (m2 - 30) / ABS([m2 - 30]) < 0 ... (2)
因此,定义您的两个指标并构建一个指标查询,该查询类似于上面等式 (2) 的 LHS。将您的阈值设置为0
并将比较运算符设置为LessThanThreshold
。
现在支持这个。您可以检查 https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html是否相同。
例如,您可以使用 (CPU Utilization>80) OR (MEMORY Consumed>55)