【问题标题】:Is there a way to determine how long has an Amazon AWS EC2 Instance been running for?有没有办法确定 Amazon AWS EC2 实例运行了多长时间?
【发布时间】:2016-07-01 08:35:29
【问题描述】:

我正在寻找一种以编程方式终止长时间运行的 AWS EC2 实例的方法。

我做了一些谷歌搜索,但似乎没有找到方法来查找实例运行了多长时间,因此我可以编写一个脚本来删除运行时间超过特定时间的实例期间...

以前有人处理过吗?

【问题讨论】:

标签: python amazon-web-services amazon-ec2 cron aws-cli


【解决方案1】:

EC2 服务为每个实例存储一个LaunchTime 值,您可以通过调用DescribeInstances 找到该值。但是,如果您停止实例然后重新启动它,该值将使用新的启动时间进行更新,因此这并不是确定实例自最初启动以来运行了多长时间的真正可靠方法。

我能想到的确定原始启动时间的唯一方法是使用 CloudTrail(假设您已为您的帐户启用它)。您可以在 CloudTrail 中搜索原始启动事件,这将有一个 EventTime 与之关联。

【讨论】:

    【解决方案2】:

    我注意到你问题上的 cron 标签,所以也许你可以使用这个 Bash 脚本:

    UPTIME=`uptime | awk {print $3}`
    
    # Reboot if uptime longer than 180 days (6 months)
    if [ $UPTIME -gt 180 ]
    then
        # Whatever you want to do here...
    fi
    

    如果您想要更精细的控制,您还可以使用以下方式从/proc/uptime 获取以秒为单位的正常运行时间:

    UPTIME=$(awk -F. '{print $1}' /proc/uptime)

    注意{print $2}会给你几秒钟的空闲时间

    【讨论】:

    • 我接受,您的答案仅在 ec2 实例本身内有效。我所追求的是我可以从亚马逊获得的任何元数据,至少可以告诉我 EC2 实例的创建时间。
    • 是的,这是针对 ec2 实例本身的 cron 的。您希望能够在其他一些“主管”机器上获取该元数据并能够从那里采取行动?
    猜你喜欢
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 2013-09-25
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多