GCP Compute EngineをZABBIXで起動

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。ヒラヤマンです。

みなさん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サーバのアクションに次のようなスクリプトを実行させるように登録して終わり!

#!/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で利用できるインスタンスを活用しない手はないですね!では、また次回。

投稿者プロフィール

ヒラヤマン
品質保証室所属
サバカンマンとは別人です

コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.

ABOUTこの記事をかいた人

品質保証室所属 サバカンマンとは別人です