語彙力トレーニング日記#5
こんばんはアラサーのシステムエンジニアです。
今日のお仕事はおもに下記2つでした。
1. CloudBuildのビルド結果をSlackに通知
2. SpotVMの停止を検知して起動
まず1. Cloudbuildのビルド結果をSlackに通知について。
チームメンバーから何度か「デプロイされていないと思ったらCloudBuildが失敗していた」との報告をいただいたのがきっかけでSlack通知の実装を決めました。
CloudBuildのビルド結果をSlackに通知するためにはPub/SubとSlack Notifierを使用します。
公式ドキュメント通り進めていけばあれよあれよとできちゃうので結構簡単です。
https://cloud.google.com/build/docs/configuring-notifications/configure-slack?hl=ja
地味に気をつけてほしい点は、Pub/Subトピック名は「cloud-builds」にしないと動かないところですね。
CloudBuildの通知は「cloud-builds」トピックに対して送信されるようになっているため、Pub/Subトピック名を自己流に変えてしまうと一生Slack通知が届きません。
( 2年前くらいそれでハマった )
最初は変なことせずドキュメント通り試してみましょうねというコトですね。
続いて2. SpotVMの停止を検知して起動について。
DB( CloudSQL )のメンテナンス作業を行う際のSSHトンネリング先としてお財布に優しいSpotVMを利用しています。
SpotVMはお財布に優しいんですがGoogleCloudによって勝手に停止されてしまうことがあります。
そのためチームメンバーから「VMが停止している」との報告が相次ぎ、自動起動設定を検討することになりました。
VMの停止ログをPub/Subへ転送し、CloudFunctionsでVM起動ができそうだったのでその方針で進めました。
ログの転送にはログシンクというものが使えそうだったのでこちらを利用しました。
そしてPub/SubトリガーのCloudFunctionsを用意し、停止ログがPub/Subへ転送されたらCloudFunctionsが起動するようにしました。
CloudFunctionsは停止ログの情報からVMのインスタンスを特定し、VMを起動します。
そんなこんなでCloudBuildのSlack通知 と VM停止検知&自動起動を実現することができました。
チームメンバの不満も解消され、生産性が少しだけアップしたのでとても満足な1日でした。
Slack Notifierの設定ファイル と VM起動CloudFunctionsのソースコード、停止ログ抽出のCloudLoggingクエリは一応ZIPに固めて添付しておきます。
ではまた!