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

Big*_*oss 6 amazon-ec2 amazon-web-services amazon-cloudwatch aws-cli uptime-monitoring

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

hel*_*loV 6

一种选择是使用AWS CLI并获取启动时间.从中计算正常运行时间并将其发送到Cloudwatch:

aws ec2 describe-instances --instance-ids i-00123458ca3fa2c4f --query 'Reservations[*].Instances[*].LaunchTime' --output text
Run Code Online (Sandbox Code Playgroud)

产量

2016-05-20T19:23:47.000Z
Run Code Online (Sandbox Code Playgroud)

另一个选择是定期运行一个cronjob脚本:

  • 调用uptime -p命令
  • 将输出转换为小时
  • 将结果发送到带有维度的Cloudwatch Count

添加后cronjob:

  • 添加一个Cloudwatch警报,当该值超过阈值或存在不充分数据时发出警报
  • INSUFFICIENT DATA表示机器未启动

  • 在我的测试中,`LaunchTime` 不会随着重启而改变,它只显示实例的配置时间。正常运行时间是从操作系统启动开始的时间。我会否决这个答案,除非我遗漏了什么。 (4认同)

emo*_*ris 5

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

使用诸如CPUUtilization之类的方法为EC2实例创建警报-在实例运行时,您将始终获得该值。

  • 将警报设置为> = 0; 这样可以确保实例在运行时都匹配。
  • 设置时间段和连续时间段以匹配所需的警报正常运行时间,例如对于24小时,您可以将时间段设置为1小时,将连续时间段设置为24。
  • 设置一个操作以在警报处于ALARM状态时发送通知。

现在,当实例的运行时间少于设置的时间时,警报将处于INSUFFICIENT DATA状态。一旦达到正常运行时间,它将进入ALARM状态并发送通知。