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

Amazon web services 如何检查AWS EC2实例当前正常运行时间,amazon-web-services,amazon-ec2,aws-cli,amazon-cloudwatch,uptime-monitoring,Amazon Web Services,Amazon Ec2,Aws Cli,Amazon Cloudwatch,Uptime Monitoring,检查EC2实例的正常运行时间并在实例的正常运行时间超过N小时时发送警报的最佳方法是什么?如何使用默认的AWS工具(如CloudWatch、Lambda)组织它?一个选项是使用AWS CLI并获取启动时间。从中计算正常运行时间并将其发送到Cloudwatch: aws ec2 describe-instances --instance-ids i-00123458ca3fa2c4f --query 'Reservations[*].Instances[*].LaunchTime' --output

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

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

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

2016-05-20T19:23:47.000Z

另一个选项是定期运行
cronjob
脚本,该脚本:

  • 调用
    正常运行时间-p
    命令
  • 将输出转换为小时
  • 将结果发送到具有维度
    Count
添加
cronjob
后:

  • 添加一个Cloudwatch警报,该警报在该值超过阈值或数据不足时发送警报
  • 数据不足表示机器未启动

我建议寻找一种“AWS”原生的方法来实现这一点

如果它基本上是向Cloudwatch发送操作系统级指标(例如,可用内存、正常运行时间、磁盘使用率等),则可以通过以下指南实现: 这将在EC2实例上安装Cloudwatch日志代理。


这样做的好处是,您可以在Cloudwatch日志中显示度量值(请参阅AWS控制台中显示CW日志界面的附图)。

这里有另一个选项,可以在Cloudwatch中完成

使用类似CPUUutilization的方法为EC2实例创建一个警报-当实例运行时,您将始终获得该警报的值

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

现在,当实例的开启时间小于设置的时间时,报警将处于数据不足状态。一旦开启正常运行时间,它将进入报警状态并发送通知。

无需直接访问服务器即可完成吗?仅使用aws api或其他工具?您是否可以提供创建报警时应将哪种结果作为维度计数发送以及选择哪种度量类型的信息?我用lambda计算正常运行时间。@b卖家为什么不在评论之前检查您的索赔?你在不理解的情况下否决了一个答案<代码>启动时间用词不当。它实际上意味着实例上次启动的时间。试试看。@Mebin您正在传递给CLI的任何实例id。在我的测试中,
LaunchTime
不会随着重新启动而改变,它只显示实例的设置时间。正常运行时间是从操作系统开始的时间。我会投票否决这个答案,除非我遗漏了什么。如果启动ec2实例,代理会自动运行吗?还是每次都需要启动/配置?