监视aws ec2实例端口

时间:2018-05-13 13:39:26

标签: amazon-web-services amazon-ec2

我有一个在EC2中运行的应用程序,它监听许多端口,一些外部设备连接到这些端口以将数据发送到我的应用程序。这很好,但我的客户端要求我必须监控这些端口,如果其中一个端口停止监听,则必须终止实例并启动新实例。

我正在阅读有关canwatch的信息,但我没有发现可以自定义的警报(向端口发出请求)。是否可以使用cloudwatch执行此操作?我正在寻找创建此监控的方向,使用内部aws服务或开发新的解决方案(可能是一个剪切脚本)。

谢谢!

2 个答案:

答案 0 :(得分:0)

我不知道任何AWS为自定义检查提供了EC2健康检查监控系统。

您可以编写AWS lambda函数,将请求发送到您需要的EC2实例上的端口。然后,您可以使用Cloudwatch Events以您想要的任何频率定期运行schedule that lambda。 lambda函数可以publish这作为cloudwatch的度量标准,这样你就可以在警报中使用它,从而在你认为合理的阈值启动新的替换实例时采取行动。

AWS的一部分确实具有内置的内置功能,但ECS。您可以拥有一个Docker实例(在EC2实例或Fargate上运行)而不是EC2实例,该实例可以有healthchecks defined

答案 1 :(得分:0)

有许多方法可以满足您的要求。

  • 最简单的解决方案:我将编写一个boto3 / shell脚本来监控端口并调用TerminateInstance API或使用AWS CLI终止当前实例。不用说,您需要传递AWS凭据或附加具有足够权限的实例配置文件来终止实例。
  • 使用Cloudwatch:有一个脚本来检查端口状态,并向Cloudwatch发送1或0(维度:计数)。如果存在连续的0或NoData,则在Cloudwatch中设置阈值,然后终止实例。如果端口不可用,则不向Cloudwatch发送任何数据,Cloudwatch中的NoData可以触发TerminateInstance。请参阅:Cloudwatch - AddingTerminateActions