自社サービスへの需要が急増する——本来なら喜ばしい出来事のはずです。ところがパブリッククラウドの運用には、見落としがちで、放置すれば事業を停滞させたり障害にまで発展しかねない落とし穴があります。それが 制限とクォータ です。
いざというときに足をすくわれないために
DoiT Internationalは、信頼されるクラウドパートナーかつFinOpsソフトウェアの提供企業として、世界中の数千社にサービスを提供しています。当社のクラウドアーキテクトが毎月数万件のお問い合わせに対応するなかで頻繁に目にするのが、クォータ上限への到達を予測できていないケースです。その結果、クラウドベンダーへのクォータ引き上げ申請を急いでもらうための駆け込み依頼につながってしまいます。

お客様から寄せられたクォータ引き上げサポート依頼
当社が10年にわたり追求してきたのは、シンプルさ・柔軟性・効率性というクラウド本来の価値を革新し、確実に届けることです。この繰り返し起こる課題を解決するために、当社のマルチクラウドプラットフォームであるDoiT Consoleにクォータの監視・アラート機能を組み込みました。

例:AWSユーザー向けDoiT Consoleのクォータ監視機能
とはいえ、パブリッククラウドを利用するすべての方が(今のところ)DoiTのお客様というわけではありません。幸い、Googleのチームもこの課題を認識しており、「Quota Monitoring Solution (QMS)」というプロジェクトをオープンソースとして公開しています。
Googleがオープンソース公開したQuota Monitoring Solution
このソリューションのGitHubリポジトリには手順が一通り掲載されていますが、本記事ではすぐに使い始められるよう、要点を絞って解説します。各ステップの詳細はリポジトリ内のドキュメントをご覧ください。
ターミナルで gcloud と terraform コマンドを実行すれば、20分とかからず以下のようなダッシュボードを構築でき、その後はアラートを組織のニーズに合わせて自由にカスタマイズできます。

組織・フォルダ・リージョン・プロジェクト単位でクォータ使用状況を可視化するLooker Studioダッシュボード
機能
出典:Google
アーキテクチャ
出典:Google
本記事で解説する内容
- QMS環境のセットアップと構成
- TerraformによるQMSのインストール
- Looker Studioダッシュボードの構築
それでは始めましょう!
前提条件
ターミナルまたはCloud Shellでgcloudコマンドを実行できること
Cloud Consoleから手動でセットアップすることも可能ですが、本ソリューションはターミナルとシェルコマンドを用いたインストール・構成を前提に設計されています。お好みのターミナルクライアント、またはGCPコンソールに組み込まれたCloud Shellのいずれかをご利用ください。
Terraformを実行できること
お使いのマシンまたはCloud ShellにTerraform CLIをインストールしてください。クラウドインフラとサーバーレス関数の構成は、Infrastructure as Code (IaC)で自動化されています。
IAMロールを付与できること
作業を進めるには、監視プロジェクトの作成、サービスアカウントの作成、サービスアカウントへのロール付与を行うため、複数のIAMロールが必要です。組織管理者ロールを持つご自身またはチームメンバーから、以下のロールを付与してもらうことをおすすめします。
- Project Creator
- Service Account Creator
- [ Organization | Folder | Project ] IAM Admin
- Service Account Token Creator
1\. QMS環境のセットアップと構成
セットアップと構成をシンプルにするため、以下を一括で実行するスクリプトを用意しました。
- 監視プロジェクト・サービスアカウント・サービスアカウントIAMの作成
- ターゲット(組織またはフォルダ)へのIAM付与
- Terraform設定ファイルと実行手順の生成
以下のコマンドをターミナルまたはCloud Shellで実行し、セットアップを開始してください。
ヒント
- プロンプトの [デフォルト値] をそのまま使う場合はRETURNキーを押すだけでOKです
- 請求先ID(xxxxxx-xxxxxx-xxxxxx)をすぐにコピー&ペーストできるよう手元に用意しておきましょう
bash <(curl -L https://bit.ly/gcp-qms-setup)
ソースコードはこちらでご確認いただけます: https://bit.ly/gcp-qms-setup

上記インストールスクリプト実行時のターミナル表示例
2\. TerraformによるQMSのインストール
初期セットアップが完了すると、認証を行ってterraformを自分で実行するよう案内が表示されます。これにより、適用前にプランを確認したり、エラーが出た場合に再実行したりできます。

セットアップスクリプト終了後のターミナル表示例。terraformを実行するための最終コマンドが案内されます
インストールコマンド(<your-…> を実際の値に置き換えてください)
PROJECT_ID=<your-project-id>
SA_EMAIL=<your-sa-email-address>
REGION=<your-region>
# configure gcloud sdk
gcloud config set core/project $PROJECT_ID
# set up short-lived oauth token
gcloud config set auth/impersonate_service_account $SA_EMAIL
export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth print-access-token)
# run terraform (re-run `terraform plan` and `terraform apply` if errors)
cd quota-monitoring-solution/terraform/example
terraform init
terraform plan
terraform apply
# unset service account impersonation
gcloud config unset auth/impersonate_service_account
# return to project directory
cd ../../../
# start cloud scheduler jobs to begin monitoring quotas
gcloud scheduler jobs run quota-monitoring-cron-job --location $REGION
gcloud scheduler jobs run quota-monitoring-app-alert-config --location $REGION
3\. Looker Studioダッシュボードの構築
セットアップを終えてterraformでアプリをインストールしたら、以下の手順でダッシュボードを構築します(実際にやってみたところ、順序が重要でした)。
Looker Studioテンプレートを開きます。
画面右上付近の「…」(3点メニュー)をクリックし、「コピーを作成」を選択します。

データソースの選択を求められたら、デフォルトのまま続行します。

別のブラウザタブにLooker Studioダッシュボードテンプレートのコピーが表示されているはずです。次は、先ほど自分のプロジェクトに作成したデータセットへ接続します。
データセットへの接続
少しクセがあり手順の順序も重要ですが、一度でうまくいかなくても何度か試してみてください。

画面下部にSQLクエリのパネルが表示されるので、編集して [project ID].[dataset].[table] をご自身の値に置き換えます。
左側にプロジェクトの一覧が表示されますが、ご自身のプロジェクトが見当たらない場合があります。その場合は検索してみて、それでも自動入力されないときは「最近のプロジェクト」タブをクリックし、プロジェクト → データセット → テーブルの順に選択してください。

テストクエリのタブに戻り、プロジェクトIDがクエリ内に正しく残っているか(テンプレートのデフォルトに戻っていないか)を確認します。

例:両方にご自身のPROJECT IDが表示されていることを確認
パネル右上の「再接続」ボタンをクリックします。確認ダイアログが出たら、データソースの変更を承認して「適用」を押してください。

完了です!
ダッシュボードにデータが表示されているはずです。表示されない場合は、少しクセのある操作なので、上記の手順を何度かやり直すとたいてい解決します。
「完了」をクリックしてパネルを閉じ、必要に応じて「表示」からダッシュボードをご確認ください。
監視・アラートの設定
Googleのドキュメントには、アラートに関する追加のカスタマイズや設定方法が紹介されています。
これで常に状況を把握し、障害につながる前にクォータの問題を察知できるようになります。