GCPで長時間バッチ処理終了時に自動終了したい

02/10/2021

A8バナー広告

簡単にまとめるとこんな感じ

  • GCP(Google Cloud Platform)を使っている
  • GCPで時間がかかる処理をしている(実験とか、クローリングとか)
  • 処理をしてないときはインスタンスを停止させておきたい
    • プロセス監視させるシェルスクリプトで対応!
  • 停止したことをきちんと確認したい
    • shutdown-scriptをメタデータに記述

プロセス監視するシェルスクリプトを書く

今回は、インスタンス内部でプロセスを監視して、プロセス終了とともにインスタンスを終了させる方針にした。

くどい感じではあるが、このスクリプトの中でもSlackに通知させる機能を書いておいた

停止したことの確認

停止できたことはちゃんと確認できたほうがいいだろう。

(停止したつもりで、インスタンスが動き続けているのは一番ヤバい)

通知先はSlackにしている。SlackはWebhook URLがすぐに用意できるから、通知先としてとても便利

GCPのコンソール画面で、インスタンス作成時に、カスタムメタデータの欄につぎのペアを入力する。

キー

slackのWeb HookURLのアドレスは自分のアドレスに変更する

使い方

  • バーチャルコンソール(tmuxなど)を立ち上げておく
  • 監視対象のプロセス番号を知る
    • ps aux | grep 実行スクリプト名
  • sudo bash machine_auto_shutdown.sh プロセス番号

おしまい!