如何检查AWS EC2实例当前正常运行时间

问题描述:

如果正常运行时间超过N小时,检查EC2实例正常运行时间并可能发送警报的最佳方法是什么?它如何使用默认的AWS工具(如CloudWatch,Lambda)进行组织?如何检查AWS EC2实例当前正常运行时间

一种选择是使用AWS CLI并获取启动时间。从计算运行时间,并将其发送到CloudWatch的:

aws ec2 describe-instances --instance-ids i-0ca3fa2c4f --query 'Reservations[*].Instances[*].LaunchTime' --output text 

输出

2016-05-20T19:23:47.000Z 

另一种方法是定期运行cronjob脚本:

  • 电话uptime -p命令
  • 输出到几小时
  • 发送结果与尺寸Count

到CloudWatch的转换加入cronjob后:

  • 添加CloudWatch的警报发送当该值超过阈值的警报或如果有不充分的数据
  • 数据不足意味着机器不在
+1

可以在没有直接访问服务器的情况下完成吗?只需使用aws api或其他东西? – BigBoss

+1

@BigBoss看到我的更新。 – helloV

+0

您能否提供哪些结果应该作为维度计数发送,以及在创建警报时选择哪种类型的指标?我使用lambda来计算正常运行时间。 – BigBoss

我会建议寻找一个“AWS”本地方式来做到这一点。

如果它基本上是发送OS级指标(例如可用内存,运行时间,磁盘使用情况等)来的CloudWatch那么这可以通过以下指南来实现: 这会安装在您的EC2实例CloudWatch的日志代理。 http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html

这样做的好处是您可以在Cloudwatch日志中显示度量标准(请参阅附加的图片,其中显示了AWS控制台中的CW日志界面)。 enter image description here

这是另一个可以在CloudWatch中完成的选项。

用CPUUtilization之类的东西为您的EC2实例创建一个警报 - 当实例运行时,您将始终为此获取值。

  • 将报警设置为> = 0;这将确保只要实例正在运行,它就会匹配。
  • 设置周期和连续周期以匹配所需的警报正常运行时间,例如对于24小时,可以将周期设置为1小时,将连续周期设置为24.
  • 设置操作以在警报发生时发送通知处于ALARM状态。

现在,当实例已经打开时间小于设定时间时,报警将处于INSUFFICIENT DATA状态。一旦它正常运行,它将进入ALARM状态并发送通知。