割り当てモニタリング ソリューション: アラート機能を備えた一元管理ダッシュボードのご紹介
Google Cloud Japan Team
※この投稿は米国時間 2021 年 9 月 25 日に、Google Cloud blog に投稿されたものの抄訳です。
多数のプロジェクトの割り当てを自動的に一元管理する方法をお探しのお客様に、Google Cloud プロフェッショナル サービスの割り当てモニタリング ソリューションをご紹介いたします。
Google Cloud はリソース割り当てを使用して、お客様が利用できる特定の共有 Google Cloud リソースの量をデフォルトで制限します。各割り当ては、特定のサービスの API 呼び出しや、プロジェクトで同時に使用されるコンピューティング コアの数など、特定のカウント可能なリソースを表します。
割り当てが適用される理由はさまざまで、例としては次のようなものがあります。
予期しない使用量の急増とサービスの過負荷状態を回避することにより、Google Cloud ユーザーのコミュニティを保護する。
お客様のリソースの管理を支援する。たとえば、アプリケーションの開発とテストの際、お客様はサービス使用量に独自の上限を設定することで、高コストなリソースの使用による予期しない課金を防ぐことができます。
割り当てモニタリング ソリューションは、多数のプロジェクト、フォルダ、または組織にわたって割り当てを管理するすべての人に恩恵をもたらします。このソリューションを使用すると、中央のダッシュボードで割り当て使用量を表示して監視したり、すべての割り当てに関するデフォルト アラート機能を使用したりするなどの操作を簡単に一括で行うことができます。
このソリューションが持つ具体的な機能は次のとおりです。
特定の組織やフォルダにおける全プロジェクトの割り当てを自動集計する機能と、所定の頻度(毎時、毎日など)で新しいプロジェクト用の割り当てを自動的にキャプチャする反復スキャン機能。
すべてのプロジェクトの個別の割り当てと比べた最近のリソース使用量を可視化するダッシュボード。
リソースがその割り当ての特定のしきい値に達した場合の、メールその他の通信チャネル(メール、SMS、Pub/Sub など)を介した事前構成済みのアラート。
このソリューションは Terraform 経由で簡単にデプロイでき、最小限の時間の投資でお客様のプロジェクトにこれを導入できます。
割り当てモニタリング ソリューション以外にも、割り当て情報を表示する方法があります。たとえば、Google Cloud Console を使用する方法や gcloud コマンドライン ツールを使用する方法です。また、リソースが割り当ての特定のしきい値に達したときに Cloud Monitoring で通知を送出するアラート ポリシーを手動で定義することもできます。たとえば、Compute Engine VM インスタンスの CPU 使用量がいずれかのリージョンで割り当ての 75% を超えたときにトリガーされるアラート ポリシーを定義できます。
割り当てを超える量の特定のリソースがプロジェクトで必要になった場合、ほとんどの割り当てに関してお客様は Google Cloud Console で直接、割り当て制限の増加をリクエストすることができます。たいていの場合、割り当て増加のリクエストは自動的に評価され、処理されます。ただし、リクエストの趣旨によっては、割り当て増加リクエストを審査担当者が処理する必要が生じることも稀にあります。審査担当者によるリクエストの処理には通常 2~3 営業日を要するため、事前に計画していただくことが重要です。
割り当て管理が効果的に行われない場合、さまざまな問題につながる可能性があります。たとえば割り当て量が不十分な場合、自動スケーリング イベントや GKE クラスタ アップグレードの実施に必要な追加のリソースを消費できなくなる可能性があります。これによって機能停止やサービス低下が生じ、顧客のエクスペリエンスに影響を与えたり、事業収益を圧迫したりする可能性があります。
注: 多くのサービスには、割り当てシステムとは無関係の制限も存在します。それらは、ファイルサイズ上限やデータベース スキーマ制限などの固定的な制約であり、増減することはできません。これらを確認するには、関連するサービスの割り当てと上限のページ(Cloud Storage の割り当てと上限など)をご覧ください。
1. 技術的なアーキテクチャ
下の図は、デプロイガイドと付属の terraform スクリプトを使用して数分でデプロイできる割り当てモニタリング ソリューションのアーキテクチャを示しています。
このソリューションには、GCP プロジェクトにデプロイできる terraform スクリプトが含まれています。このテンプレートは、GCP プロジェクトに次のリソースをプロビジョニングします。
Cloud Scheduler - Cloud Scheduler は、エンタープライズ クラスのフルマネージド cron ジョブ スケジューラです。これは、スケジュールされた間隔で Cloud Functions をトリガーするために使用されます。
Cloud Functions - Cloud Functions は、イベント ドリブン型のサーバーレス コンピューティング プラットフォームです。これには、プロジェクト割り当てをスキャンするコードロジックが組み込まれています。
Pub/Sub - Pub/Sub を使用すると、サービスは非常に少ない遅延で非同期的に通信できます。これは、イベント ドリブン型のアプリケーション設計と高いスケーラビリティをサポートするために使用されます。
BigQuery - BigQuery は、サーバーレスで高度にスケーラブルなデータ ウェアハウスです。これはプロジェクト割り当てに関するデータを保存するために使用されます。
データポータル - データポータルは、ダッシュボード兼レポートツールです。複数プロジェクトにわたる割り当てを単一のビューに表示します。Looker などの他の可視化ツールを選んで構成することもできます。今後、Looker ベースのダッシュボードも提供される予定です。
Cloud Monitoring のカスタムログ指標とアラート - Google Cloud Monitoring はロギング機能とアラート機能を備えています。これを使用すると、アラートによってクラウド アプリケーション内の割り当てに関する問題をタイムリーに認識し、迅速に割り当て増加をリクエストできます。
Cloud Scheduler はこのソリューションの設定用インターフェースとしても機能し、次のような構成が可能です。
割り当てを監視する対象の親ノードとしてフォルダ ID と組織 ID を指定できます。親ノードとして、単一のフォルダ ID または組織 ID、あるいは複数のフォルダ ID または組織 ID のリストを指定することができます。
また、アラート用の指標しきい値とメールアドレスを構成することもできます。
現時点で、アラートは、メール、モバイルアプリ、PagerDuty、SMS、Slack、Webhook、および Pub/Sub を介して受信可能です。
指標しきい値を使用してアラートが生成されます。たとえば、アラートを生成するためのしきい値として 70% または 80% を選択できます。
アラートは、構成されたアラート チャネルに送信されます。
注意:
新しいプロジェクトの追加や既存のプロジェクトの削除などによってプロジェクトが変更された場合、それ以降のスケジュール済みスキャンでそれが自動的に反映されます。
GCP Cloud Monitoring API における変更はすべて反映されます。たとえば、新しい割り当て指標が導入された場合、コードを変更しなくてもソリューションに自動的に反映されます。
Cloud Monitoring アラート通知チャネルにおける変更も、コードを変更せずに自動的に利用できるようになります。
1.1 ワークフロー
これらすべてのコンポーネントを組み合わせると、Cloud Scheduler でワークフローが開始します。特定のフォルダ ID と組織 ID、指標しきい値、およびメールアドレスを指定して、スケジュールされた間隔でジョブを実行するように構成できます。
サービス アカウントを作成して、対象の組織やフォルダの割り当て使用量を閲覧するためのアクセス権をそれに付与できます。
Cloud Scheduler は、構成された頻度で(たとえば毎日)自動的に起動し、ユーザー構成を Cloud Functions に渡します。
サービス アカウントのアクセス権に基づき、最初の Cloud Functions インスタンスが、親ノードのプロジェクトの一覧を取得したうえでプロジェクト ID のリストを生成し、それらを Pub/Sub トピックにパブリッシュします。
前のステップで生成されたメッセージから 2 番目の Cloud Function インスタンスがトリガーされ、別のメッセージとしてプロジェクト ID をトピックから受け取ります。
プロジェクト ID を受け取った 2 番目の Cloud Function インスタンスは、一般公開されている GCP Cloud Monitoring API を使用して、各プロジェクトの割り当てを取得します。
Cloud Function が、BigQuery テーブルにプロジェクトの割り当てデータを読み込みます。
アラート
BigQuery テーブル上のスケジュールされたクエリによって、構成済みしきい値より大きな使用量を持つすべての割り当てをフィルタします。
3 番目の Cloud Function インスタンスが、Cloud Logging に指標に関するデータを記録します。
Google Cloud Monitoring 内の事前設定されたカスタムログ指標によってアラートが作成され、構成済み通知チャネルにそれが送信されます。
レポート
データが BigQuery に読み込まれると、データポータルが BigQuery からそのデータを取得し、すべてのプロジェクトと指標をまとめた単一のダッシュボード ビューにそれを表示します。
データポータルのダッシュボードは使いやすく、カスタマイズと、共有も簡単です。
また、スケジュールされたレポートをこのダッシュボードで構成すると、割り当てモニタリング レポートを PDF としてメールで受信できます。
2. デプロイ プロセス
Google Cloud カスタム割り当てモニタリング ソリューションは、デプロイ ガイドと付属の terraform スクリプトを使用して数分でデプロイ可能です。3 つの簡単なステップを以下に示します。
サービス アカウントを作成して、アクセス権を付与する
terraform スクリプトを実行して、Google Cloud プロジェクトにすべてのリソースをプロビジョニングする
データポータル ダッシュボードを構成する
各ステップの詳細については、PSO GitHub でデプロイ ガイドの Readme セクションを参照してください。
3. カスタマイズ方法
これは、Google Cloud PSO GitHub リポジトリで入手可能なオープン ソースコードです。リポジトリをフォークして、要件に合わせてカスタマイズできます。デプロイ中に、Terraform がコードをダウンロードします。コードとデータはお客様の環境内に置かれます。
4. 概要
割り当てモニタリング ソリューションを使用すれば、組織またはフォルダで 1 つの場所から複数の Google Cloud サービスの割り当てを表示し、監視できます。サービス割り当てを使用すると、割り当て使用量の追跡とアラートの受信を簡単かつ一貫性のある方法で行うことができ、新しいプロジェクトの割り当てモニタリングをセットアップする時間と労力を節約できます。
このソリューションに関するご質問やご提案がありましたら、このフォームに記入するか、pso-quota-monitoring@google.com までお送りください
謝辞
このソリューションの構築に貢献した Darpan Shah、Raghavendra Kyatham 氏、および Marlon Pimentel と、このプロジェクトの後援者である Rahul Khandkar 氏、Karina Rivera、および Rohan Karne 氏に感謝の意を表します。また、プロトタイプ作成を支援し、ソリューションを世界中にロールアウトしたすべてのテクニカル アカウント マネージャー、とりわけ Naveen Nelapudi、Vijay Narayanan、Rohit Iyer、Emily Wong、および Isha Rana に感謝します。
- 戦略クラウド エンジニアAnuradha Bajpai
- テクニカル アカウント マネージャーAdrian Beheschti