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

Posted

技术标签:

【中文标题】扩展 Fargate 服务任务以匹配 CloudWatch 指标【英文标题】:Scale Fargate service tasks to match CloudWatch metric 【发布时间】:2019-03-31 15:10:29 【问题描述】:

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

如何设置 Fargate 扩展策略以根据我现有的“需要的工人”指标进行扩展。

度量数学

公式:m1-m2-3 == 所需的比例偏移 m1:活跃工作者(任务) 平方米:需要工人(任务)

    "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
    

【问题讨论】:

我对措辞有点困惑。您是否尝试在设置应用自动缩放时创建 Cloudwatch 警报,但仅有的两个可用指标是 CPUUtilizationMemoryUtilization @bluescores 我更新了问题以提供更多详细信息 【参考方案1】:

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

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

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

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

【讨论】:

基于度量数学的警报是我正在寻找的解决方案

以上是关于扩展 Fargate 服务任务以匹配 CloudWatch 指标的主要内容,如果未能解决你的问题,请参考以下文章

Auto-Scaling 移除 ECS 服务中正在运行的任务 (FARGATE)

如何诊断 ECS Fargate 任务启动失败?

AWS ECS Fargate 任务的静态出站 IP

Terraform Fargate 任务定义请求执行角色

AWS Fargate 上的扩展和扩展如何工作?

限制给定任务定义的并发 Fargate 任务数