扩展 Fargate 服务任务以匹配 CloudWatch 指标

Scale Fargate service tasks to match CloudWatch metric

我正在使用 CloudWatch Metric Math 来计算我希望 Fargate 服务扩展到的工作人员(任务)数量。我计划在 CloudWatch 中创建一个警报,以在它超过或低于目标数字 0 时触发扩展操作。但是,看起来我无法基于 CloudWatch 指标数学创建警报或警报在两个数字之间进行任何类型的比较(所需任务数与现有任务数)。

如何设置 Fargate 扩展策略以根据 'Workers Needed' 的现有指标进行扩展。

公制数学

  • Formula: m1-m2-3 == desired scale offset
  • m1: Active Workers (tasks)
  • m2: Workers Needed (tasks)
{
    "type": "metric",
    "x": 0,
    "y": 0,
    "width": 24,
    "height": 6,
    "properties": {
        "metrics": [
            [ { "expression": "m1-m2-3", "label": "Workers/Needed difference", "id": "e1" } ],
            [ "AWS/ECS", "MemoryUtilization", "ServiceName", "worker-service", "ClusterName", "my-cluster", { "period": 60, "stat": "SampleCount", "id": "m1", "label": "Active Workers" } ],
            [ "LogMetrics", "Workers Needed", { "period": 60, "stat": "Maximum", "id": "m2" } ]
        ],
        "view": "timeSeries",
        "stacked": false,
        "region": "us-east-1",
        "title": "Worker/Lab difference",
        "period": 300
    }
}

编辑:Alarms based on metric math is now a thing

This doc page about metric math根本没有提到警报,表达式似乎更多的是用仪表板可视化。就警报而言,我在 SDK 或 cli 文档中也没有看到任何关于度量数学的内容。

您的下一个最简单的解决方案可能是向 AWS 的所有缺点致敬,并编写一个拉取指标的 Lambda,进行计算,然后将指标作为自定义指标发布 PutMetric.如果您想要类似 cron 的东西,或者通过将它与 SNS 集成或直接调用它来实现许多其他东西,您可以使用 CloudWatch Event 触发它。

这不是您想要的答案,但不幸的是,我认为这是获得您想要的功能的最简单方法。