如何让 Amazon Cloudwatch 监控特定的不健康实例并在 Elastic Beanstalk 部署中终止它们

How to make Amazon Cloudwatch monitor specific unhealthy instances and terminate them in an Elastic Beanstalk deployment

正在尝试创建 Amazon Cloudwatch 警报以监控面向 public 的网站的 Elastic Beanstalk 部署。 Elastic Beanstalk 的警报选项似乎不允许监视未能通过 Beanstalk 的健康检查 URL 查询的特定实例。我需要确定特定的不健康 INSTANCE 并终止它。从那里,我的自动缩放策略将自动替换终止的实例。

一些背景

设置:面向 public 的站点的 Elastic Beanstalk 部署 运行 LAMP。

目的:为了额外的故障保护安全性,我添加了一个守护进程来监视 /var/www 上的文件系统的状态。如果文件系统的时间戳或大小发生变化(即,不需要的文件引入或更改),监视器将触发一个脚本,删除位于 elasticbeanslak 的健康检查 URL 的 php 文件(随机 url在 /var/www 目录中)并在 ELB 监控级别强制进入 "unhealthy" 状态。

一切正常,除了我似乎无法找到一种方法让 Amazon 识别导致健康检查失败的特定实例并让我仅终止该实例。

用于创建警报以处理此特定功能和启动实例终止的 AWS 文档不清楚。我已经尝试在 Beanstalk 级别设置健康监控,它可以识别不健康的状态,但不能识别特定的实例。对 AWS 来说并不陌生,但对 Cloudwatch 指标来说相对较新。

感谢您的建议。


所以看起来你的基本用例是这样的:

  1. /var/www 目录出现问题,您的脚本删除了运行状况检查脚本。
  2. 实例未通过健康检查
  3. 实例被终止然后被自动缩放替换

一种选择是使用 Elastic Beanstalk 的 Scaling Triggers setting to configure your Autoscaling Group to immediately replace hosts on the UnhealthyHostCount trigger measurement. If you are using the API you can set the triggers with these 选项设置。