【问题标题】:AWS Cloud watch alarm, triggering autoscaling using multiple metricsAWS Cloudwatch 警报,使用多个指标触发自动扩展
【发布时间】:2020-06-12 00:01:29
【问题描述】:

我想创建一个基于多个指标数据触发自动缩放的云监视警报。由于 Cloud Watch 本身不支持此功能(如果我错了,请纠正我)。我想知道如何克服这个问题。

我们能否从不同的指标(例如 CPUUtilization、NetworkIn、NetworkOut)中获取数据,然后使用 mon-put-data 创建自定义指标并输入这些数据以创建新的指标以触发自动缩放?

【问题讨论】:

    标签: amazon-cloudwatch


    【解决方案1】:

    是的 .. Cloudwatch 警报只能在单个 Cloudwatch 指标上触发,因此您需要根据自己的建议发布自己的“聚合”自定义指标和警报。

    这是一篇描述使用自定义指标触发自动缩放的博文。

    http://www.thatsgeeky.com/2012/01/autoscaling-with-custom-metrics/

    【讨论】:

    • 感谢您的回复。但是这里还有一个问题,在创建自定义指标 mon-put-data(...) 时,您必须定义一种单位类型。在我的情况下,CPUUtilizatoin 将是 '%',其中作为 NetworkIn,NetworkOut 不能以 '%' 作为单位。如何克服这个?
    • 明确建议的策略是获取网络和 CPU 指标(通过 GetMetricStatistics 获得)并将它们组合成一个新的自定义指标(通过您自己定义的某些函数),然后您将发布通过 PutMetricData ...然后在该自定义指标上创建警报,该指标将充当您的 Autoscaing 警报 ...
    【解决方案2】:

    您现在可以使用 CloudWatch Metric Math。

    指标数学使您能够查询多个 CloudWatch 指标并使用 数学表达式来根据这些指标创建新的时间序列。你 可以在 CloudWatch 控制台中可视化生成的时间序列,并 将它们添加到仪表板。

    有关度量数学语法和函数的更多信息,请点击此处: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html#metric-math-syntax

    但是,需要注意的是没有逻辑运算符,您必须使用算术函数才能退出。

    为了帮助碰到这里的人,发布一个示例: 假设您想在 CPUUtilization

    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

    【讨论】:

      【解决方案3】:

      现在支持。你可以检查 https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html 相同。

      例如,您可以使用 (CPU Utilization>80) OR (MEMORY Consumed>55)

      【讨论】:

        猜你喜欢
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-18
        • 1970-01-01
        • 2014-10-06
        • 2018-09-23
        相关资源
        最近更新 更多