10

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

4

3 回答 3

12

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

使用 CPUUtilization 为您的 EC2 实例创建警报 - 当实例运行时,您将始终获得此值。

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

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

于 2017-02-13T15:59:15.453 回答
9

一种选择是使用 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命令
  • 将输出转换为小时
  • 将结果发送到具有维度的 CloudwatchCount

添加后cronjob

  • 添加一个 Cloudwatch 警报,当此值超过阈值或数据不足时发送警报
  • 数据不足意味着机器未启动
于 2017-01-12T22:45:14.787 回答
3

我建议研究一种“AWS”本机方式来执行此操作。

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

这样做的好处是,您可以在 Cloudwatch 日志中显示指标(请参阅在 AWS 控制台中显示 CW 日志界面的附图。)。在此处输入图像描述

于 2017-01-13T02:24:50.620 回答