AWS ECS 是否可以在遇到内存利用率限制时发出警报?



我已阅读 ECS 监控文档,但没有找到如何在 CloudWatch 事件或指标帮助下对ECS 任务内存限制命中发出警报。我遇到过ECS容器打破默认任务硬限制512 Mb并重新启动的情况。CloudWatch事件触发ECS 任务状态更改,例如从正在运行更改为已停止,但在事件详细信息"stoppedReason"中,您可能只发现"任务 ELB 运行状况检查失败...",尽管我绝对知道实际原因是内存限制中断和 Docker 端的容器谋杀。下面是事件规则模式:

{
"source": [
"aws.ecs"
],
"detail-type": [
"ECS Task State Change"
],
"detail": {
"lastStatus": [
"STOPPED"
]
}
}

CloudWatchMemoryUtilization维度ServiceName的指标也没有多大帮助,因为触发警报的最短持续时间(范围)为 1 分钟,但容器终止重启周期运行得更快。没有足够的时间抓住峰值。我想这同样适用于ClusterName维度(换句话说,对于整个集群)。

我想知道如何获取有关任务(容器,容器实例)硬内存限制中断的通知?

或者,您可以使用 SNS 服务对 Cloudwatch 指标设置警报,以便在内存利用率超过限制时通知自己。

假设

  • 您的目标是确定重新启动的原因是内存使用情况而不是其他原因。
  • 未以足够高的频率报告内置内存指标。

您可以从 ECS 内部编写自己的自定义高分辨率指标,该指标每秒报告一次内存使用情况。

当您为 ECS 服务创建弹性伸缩时,选择内存利用率作为保留,ECS 将为其创建云监视警报,然后转到云监视警报仪表板并使用 SNS 通知修改该警报。 当内存利用率升高或降低时,您将收到通知。

  • 您也可以在 CloudWatch 控制面板中手动创建相同的警报。

最新更新