こんにちは。ヒラヤマンです。
みなさんCompute Engine使う際に、プリエンプティブをオンにしてますか?
プリエンプティブをオンにすると料金が格段に安くなります。(n1-standard-1であれば、$0.0663/hが$0.001325/hになるので80%OFF)
ただし24時間以内にシャットダウンされるので、落ちたら自動起動するようにしておきたいと思うはずです。
今回はZABBIXで監視して、ダウンしたらZABBIXからGCPのAPIを叩いて、該当インスタンスを起動させる仕組みをテストしました。
ZABBIXサーバは構築されているとして、その後の手順です。
まずは、GCPのAPIを叩く準備として、サービスアカウントを作成
サービスアカウント名を適切に。役割はComputeインスタンス管理者とします。
新しい秘密鍵をJSONで取得します。取得した鍵は、ZABBIXサーバ側に転送してください。(例:/usr/share/zabbixに保存)
ここまでできたら後は簡単です。
ZABBIXサーバのアクションに次のようなスクリプトを実行させるように登録して終わり!
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#!/bin/bash # gcloud auth activate-service-account test-505@developer.gserviceaccount.com --key-file /usr/share/zabbix/test-505.json --project test-155910 # gcloud compute instances list | grep instance-1 | awk '{print $2}' SERVICEACCOUNT=${1} KEYFILE=/usr/share/zabbix/${1}.json PROJECT=${2} INSTANCE=${3} gcloud auth activate-service-account ${SERVICEACCOUNT} --key-file ${KEYFILE} --project ${PROJECT} > /dev/null ZONE=`gcloud compute instances list | grep ${INSTANCE} | awk '{print $2}'` gcloud compute instances start ${INSTANCE} --zone ${ZONE} |
第1引数は、サービスアカウントIDです。第2引数はプロジェクトIDです。第3引数はインスタンス名です。
ZABBIXの実行ユーザーでスクリプトが実行できるように権限を付けてください。
ZABBIXのアクション設定はこんな感じです。
ZABBIXが監視を続けている限り、インスタンスは落ちてもすぐに起動してきます。
80%OFFで利用できるインスタンスを活用しない手はないですね!では、また次回。
投稿者プロフィール
最新の投稿
- AWS2021年12月2日AWS Graviton3 プロセッサを搭載した EC2 C7g インスタンスが発表されました。
- セキュリティ2021年7月14日ゼロデイ攻撃とは
- セキュリティ2021年7月14日マルウェアとは
- WAF2021年7月13日クロスサイトスクリプティングとは?