如果正常运行时间超过N小时,检查EC2实例正常运行时间以及可能发送警报的最佳方法是什么?如何使用CloudWatch,Lambda等默认AWS工具进行组织?
一种选择是使用AWS CLI并获取启动时间.从中计算正常运行时间并将其发送到Cloudwatch:
aws ec2 describe-instances --instance-ids i-00123458ca3fa2c4f --query 'Reservations[*].Instances[*].LaunchTime' --output text
产量
2016-05-20T19:23:47.000Z
另一个选择是定期运行一个cronjob
脚本:
调用uptime -p
命令
将输出转换为小时
将结果发送到带有维度的Cloudwatch Count
添加后cronjob
:
添加一个Cloudwatch警报,当该值超过阈值或存在不充分数据时发出警报
INSUFFICIENT DATA表示机器未启动
这是可以在CloudWatch中完成的另一个选项。
使用诸如CPUUtilization之类的方法为EC2实例创建警报-在实例运行时,您将始终获得该值。
将警报设置为> = 0; 这样可以确保实例在运行时都匹配。
设置时间段和连续时间段以匹配所需的警报正常运行时间,例如对于24小时,您可以将时间段设置为1小时,将连续时间段设置为24。
设置一个操作以在警报处于ALARM状态时发送通知。
现在,当实例的运行时间少于设置的时间时,警报将处于INSUFFICIENT DATA状态。一旦达到正常运行时间,它将进入ALARM状态并发送通知。