如何根据CPU使用情况自动终止空闲GCE实例?

Jam*_*mes 4 google-compute-engine

我在实例组中的某些实例上运行了一些稍微不可靠的软件.该软件由启动脚本安装和运行,并且大部分时间都可以正常运行,但是由于软件中存在某种类型的内存泄漏,大约约10%的新实例会因内存耗尽而崩溃.我不能自己解决这个漏洞,所以在此期间,我每隔几个小时就检查一次实例并查看显示空闲CPU的任何内容(该软件正常消耗所有可用的CPU电源).

但是,我正在使用可抢占的实例,它们可以随时被杀死并重新启动,只要我没有主动监视它们就会运行死实例.经过一天无人看管后,我通常会在仪表板中看到约80-85%的CPU使用率,其余部分则被浪费掉了.

有没有任何自动化方法可以杀死这些死亡的实例?重新启动它们已由实例组处理.

小智 7

以下对我有用.这是它使用bash脚本uptimeUNIX命令检查CPU上的15分钟的平均负载是否低于阈值,并自动关闭系统,如果这是在连续十张支票属实.您需要在VM实例中运行它.

信用,更详细的解释:Rohit Rawat的博客.

#!/bin/bash
threshold=0.4

count=0
while true
do

  load=$(uptime | sed -e 's/.*load average: //g' | awk '{ print $3 }')
  res=$(echo $load'<'$threshold | bc -l)
  if (( $res ))
  then
    echo "Idling.."
    ((count+=1))
  fi
  echo "Idle minutes count = $count"

  if (( count>10 ))
  then
    echo Shutting down
    # wait a little bit more before actually pulling the plug
    sleep 300
    sudo poweroff
  fi

  sleep 60

done
Run Code Online (Sandbox Code Playgroud)


Mic*_*yan 2

这个问题似乎有两个部分:

  1. 识别死亡实例。
  2. 消灭那些实例。

在识别死实例方面,一种方法是拥有一个不运行该软件并密切关注其他实例的单独的管理实例。例如,它可以通过定期向各个实例发送运行状况请求并将无响应的实例或报告 CPU 使用率过高的实例标记为不运行状况来实现此目的。

一旦您的管理实例识别出需要重置的不健康实例,您应该能够使用 API(我猜是重置命令)或使用 gcloud 命令行工具执行相同的操作来重置这些其他实例。


归档时间:

查看次数:

1792 次

最近记录:

8 年,3 月 前