【问题标题】:How to check AWS EC2 instance current uptime如何检查 AWS EC2 实例当前的正常运行时间
【发布时间】:2017-05-28 03:52:03
【问题描述】:

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

【问题讨论】:

    标签: amazon-web-services amazon-ec2 aws-cli amazon-cloudwatch uptime-monitoring


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 注意:警报最多只能检查 24 小时的跨度,因此超出此范围将不再有效。话虽如此,由于最新的 CloudWatch 代理 (2021) 不会报告正常运行时间,因此在此之前这是一个聪明且出色的解决方案。
    【解决方案2】:

    一种选择是使用 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 警报,当此值超过阈值或数据不足时发送警报
    • 数据不足表示机器未启动

    【讨论】:

    • 不直接访问服务器可以吗?只是使用 aws api 或其他东西?
    • 您能否提供信息,应该将哪种结果作为维度计数发送,以及在创建警报时选择哪种类型的指标?我正在使用 lambda 来计算正常运行时间。
    • @bparker 你为什么不在评论前检查你的声明?您在不理解的情况下对答案投了反对票。 Launch time 用词不当。它实际上表示实例上次启动的时间。试试看。
    • @Mebin 您传递给 CLI 的任何实例 ID。
    • 在我的测试中,LaunchTime 不会随着重启而改变,它只会显示配置实例的时间。正常运行时间是从操作系统启动开始的时间。除非我遗漏了什么,否则我会否决这个答案。
    【解决方案3】:

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

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

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

    【讨论】:

    • 如果您启动一个 ec2 实例,代理会自动运行吗?还是每次都需要启动/配置?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    相关资源
    最近更新 更多