コスト管理

コスト超過の防止: 割り当てをプログラムで管理する方法

#finserv

※この投稿は米国時間 2021 年 2 月 6 日に、Google Cloud blog に投稿されたものの抄訳です。

クラウド環境を管理する際の重要なテーマの一つとして、財務ガバナンスを設定し、予算超過を防止するというものがあります。幸い、Google Cloud の各種サービスでは割り当てを設定できるようになっています。使いすぎを防ぐために予防線を張り、予想外のコスト急増を防ぐには、この割り当てが重要な役割を果たします。このたび、Service Usage API で割り当ての上限がプレビュー版としてサポートされ、割り当ての設定管理をプログラムで行えるようになりました。

Service Usage API は、クラウド プロジェクト内にある他の API やサービスを確認、管理するためのサービスです。この Service Usage API が割り当ての上限に対応したことにより、Compute Engine などのサービスの割り当てを管理できるようになりました。

このブログ投稿では、Google Cloud の運用ツールで前述の新機能を使って、プロジェクトが消費するリソースのトラッキングや、アラートの設定、デプロイサイズの調整を行い、コストを適切に管理する方法を見ていきます。

割り当てについて

割り当てとは、プロジェクトや組織が消費できるリソースを制限するための仕組みです。具体的には、Compute Engine の CPU の種類と数や、一定期間内に API に送信可能なリクエストの最大数など、割り当ての指標とその上限を設定します。

割り当ての上限は、グローバルに適用することが可能です。グローバルに適用する場合、リソースの使用場所にかかわらず、プロジェクト全体に対して割り当ての上限を 1 つだけ設定します。または、クラウドのリージョンやゾーンごとに割り当ての上限を適用することもできます(それぞれ、リージョンの上限、ゾーンの上限と呼ばれます)。プロジェクト管理者は、このような割り当ての上限を使って、プロジェクトごとに使用可能なリソースの量や場所を制限することで、コストを適切に管理できます。

たとえば、本番環境のワークロードにハイエンドの CPU や外部の VPN ゲートウェイを多数割り当てて、柔軟にスケールするといったことが可能です。一方、実験的なプロジェクトに対しては、調査研究用の予算内に収まるように、上限を非常に低めに設定できます。

割り当ての上限が導入された当初、その管理手段は Google Cloud Console のみでした。このインターフェースはちょっとした変更を加えるのには適していますが、プログラム的なアプローチが好ましい場合には不向きです。たとえば、上限をいくつも設定する、自動ワークフロー内で割り当ての上限を適用するといった目的には向いていません。

割り当ての上限をプログラムで設定する

Service Usage API を使うと、使用可能な割り当ての上限を調べたり、新たな上限を設定したりできます(ユーザー オーバーライドと呼ばれます)。具体的には、プロジェクトの作成時にワークフローやスクリプトで自動的に割り当ての上限を設定できるほか、すでに使用している Terraform などの自動化ツールを活用することも可能です。ただし、Service Usage API では、デフォルトで許可されている使用可能な割り当てを増やすことはできませんのでご注意ください。そのためには、割り当てページで割り当ての増加リクエスト(QIR)を作成する必要があります。

Service Usage API を呼び出すには、直接 HTTP リクエストを作成するか、Google が各種言語(Go、Java、Python など)で提供しているクライアント ライブラリを使用します。

割り当てのモニタリングとアラート

Cloud Monitoring でユーザー インターフェースまたは API を使って、割り当てのモニタリングや、使用履歴のグラフ作成、一定のしきい値到達時のアラート設定を行えます(割り当て指標の使用をご覧ください)。

Cloud Monitoring では、プロジェクトがリソースの使用を開始すると同時に、Service Usage API でサポートされている割り当てのトラッキングが開始されます。具体的には、Allocation quota usage、Rate quota usage、Quota limit、Quota exceeded error(割り当て超過エラー)がすべて「Consumer Quota」リソースタイプの下に自動的に保存されます。

Metrics Explorer を使用して、これらの割り当てデータに対してクエリを実行する、グラフを作成する、モニタリング ダッシュボードにデータやグラフを簡単に取り込むといったことができます。このようにして、チームメンバーが各自で過去のイベントの確認、傾向のトラッキング、一定期間内の使用量の変化のモニタリングを実施できます。

割り当てデータに関するアラートを作成し、あらかじめ定義したしきい値を超えたり、割り当ての上限に近付いたりしたときに通知を送信することもできます。そのためには、アラートをトリガーする条件と、アラートの送信先を定義します(通知チャンネルとしては、メール、SMS、Cloud Console アプリ、PagerDuty、Slack、Pub/Sub、Webhook などを指定できます)。アラートの作成や構成には、Cloud Monitoring の UI または API を使用します。

比率アラート

新しい Monitoring Query Language(MQL)では、比率アラートを作成することが可能です。これは、柔軟性の高い、非常に便利なアラートです。比率アラートでは、アラートのしきい値として、固定した数値ではなく、割り当ての上限に対する比率を設定します。アラートを比率で設定すれば、割り当ての上限が変化したときに、アラートを定義し直す必要がありません。たとえば、CPU のアラートのしきい値を「75%」と設定した場合、CPU の割り当ての上限が 100 だったとすると、使用数が 75 を超えたときにアラートがトリガーされます。CPU の割り当ての上限を 300 に増やすと、CPU の使用数が 225 を超えたときに、アラートがトリガーされます。

また、MQL をワイルドカード フィルタと組み合わせると大変便利です。たとえば、「いずれかの割り当てが上限の 80% に達したときにアラートを受信する」といった条件を設定し、1 つのアラートで大半の割り当てをカバーすることが可能です。

使ってみる

プロジェクトのオーナー、閲覧者、編集者であれば誰でも Cloud Console を使って割り当て使用状況にアクセスできます。まず、割り当てService Usage に関するドキュメントを読んでから、Service Usage API によるサービス割り当ての管理をお読みください。割り当てのモニタリングとアラート作成については、まず割り当て指標の使用のドキュメントを読んでから、MQL比率アラートワイルドカードの詳細ドキュメントをご覧ください。


-プロダクト マネージャー Jean-Francois Vincent

-プロダクト マネージャー Rory Petty