Seit Januar 2013 bietet Amazon CloudWatch eine Option zum Verwenden von Amazon CloudWatch zum Erkennen und Herunterfahren nicht verwendeter Amazon EC2-Instances. Weitere Informationen zu dieser Funktion finden Sie im einführenden Blogbeitrag Amazon CloudWatch – Alarmaktionen:
Heute geben wir Ihnen die Möglichkeit, aufzuhören oder beenden Sie Ihre EC2-Instanzen, wenn ein CloudWatch-Alarm ausgelöst wird . Sie können dies als Ausfallsicherheit (Erkennen einer anormalen Bedingung und dann Handeln) oder als Teil der Verarbeitungslogik Ihrer Anwendung (Warten auf eine erwartete Bedingung und dann Handeln) verwenden. [Hervorhebung von mir]
Ihr Anwendungsfall ist im Abschnitt Failsafe Ideas aufgeführt speziell:
Wenn Sie (oder Ihre Entwickler) vergesslich sind, können Sie ungenutzte EC2-Instances erkennen und herunterfahren. Sie können dies tun, indem Sie über einen längeren Zeitraum einen sehr niedrigen Lastdurchschnitt erkennen. Diese Art von Failsafe könnte verwendet werden, um Ihre AWS-Rechnung zu reduzieren, indem sichergestellt wird, dass Sie nicht für Ressourcen bezahlen, die Sie nicht tatsächlich verwenden.
Wie skizziert, hängt dies davon ab, dass Sie in der Lage sind, die entsprechende Bedingung heuristisch zu erkennen, die den Alarm auslöst und die Instanz stoppt – Sie können es auf die nächste Ebene bringen, indem Sie benutzerdefinierte Metriken in CloudWatch veröffentlichen, basierend auf der Anzahl der angemeldeten SSH-Benutzer, der Leerlaufzeit oder andernfalls und gewinnen Sie wiederum mehr Kontrolle/Präzision für den gewünschten Erkennungs- und Abschaltprozess.
Sie könnten direkt auf der Instanz selbst ein Cron-Job-Skript erstellen, das einen Befehl wie
verwendetnetstat | grep ssh | grep ESTABLISHED
und wenn kein Ergebnis zurückgegeben wird, schreiben Sie das in die Datei, dann versucht es der Cron erneut, und wenn es erneut keine Ergebnisse zurückgibt, führt das Skript dies aus.
/sbin/shutdown -h now
Wenn alles, wonach Sie suchen, darin besteht, den Server am Laufen zu halten, während Sie angemeldet sind, und Ihre Sitzung für weniger als n
im Leerlauf zu halten Zeiteinheiten können Sie dies über ein Cron-Skript tun, das Sie erwähnt haben, indem Sie die Ausgabe von w(1)
überwachen was IDLE
meldet Zeit für eingeloggte Benutzer, die Sie nutzen können.