Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Iris 3: コスト管理を支える自動ラベリング

By Joshua FoxFeb 25, 20255 min read

このページはEnglishDeutschEspañolFrançaisItalianoPortuguêsでもご覧いただけます。

PubSub と CloudSQL にも対応。Google Cloud リソースラベラーが大幅進化

2018年、DoiT International は Google Cloud のリソースを自動でラベリングするオープンソースプロジェクト Iris をリリースしました(ソースコードはこちら)。このたび、新機能を盛り込み、モダンな実装で生まれ変わった Iris 3 を公開しましたので、ご紹介します。

Iris でできること

Iris は Google Cloud のリソースに自動でラベルを付与し、より詳細でわかりやすい請求レポートの作成を可能にします。

GCP 組織内の各 Google Cloud リソースには、リソースの各フィールドを反映したラベルが自動生成されます。例えば Google Compute Engine インスタンスには、[iris_name:nginx][iris_region:us-central1] のようなラベルが付与されます(プレフィックスは設定で変更可能です)。

意外に思われるかもしれませんが、こうしたラベルがなければ、これらの情報は請求データから取得できません。

ラベルさえ付いていれば、お好みの請求分析ツールで自由にレポートを作成できます。

Iris の使い方

2 つのレポートシステムを例に、Iris を活用することでクラウド請求レポートの作成時間がどれだけ短縮できるかを見てみましょう。

  1. DoiT International の Cloud Management Platform
  2. Google Cloud の Billing Console

DoiT Cloud Management Platform

Cloud Management Platform の Cloud Reports GUI で、対象期間やその他のフィールドを設定したレポートを作成し、Labels チップをクリックしてラベル名(例: iris_instance_type)を選択します。新しく追加されたラベルチップ(iris_instance_type)をクリックすれば、特定の値で絞り込めます。この段階で、ラベルが付いていないリソース(Iris 3 で対象外に設定したプロジェクト内のリソースなど)を除外することもできます。

あとはラベルチップを左パネルにドラッグしてグルーピングを指定すれば完了です。

Cloud Management Platform でインスタンスタイプ別にレポートを作成

Google Cloud Platform Billing Reports

もちろん DoiT をご利用いただけたら嬉しいのですが、まだの方もいらっしゃると思いますので、GCP 標準の請求レポートでの方法もご紹介します。

Billing Console のビューで、対象期間やその他のフィールドを設定したレポートを作成し、右下のペインにある Labels をクリックしてラベルキー名(例: iris_instance_type)を入力します。この段階で特定の値を選んで絞り込みも可能です(ラベルが付いていないリソースは自動的に除外されます)。続いて Grouping へ移動し、再度ラベルを入力します。

Billing Console でインスタンスタイプ別にレポートを作成

対応している Google Cloud 製品

現時点で対応しているリソースタイプは以下のとおりです。

  • Compute Engine インスタンス(プリエンプティブルや Managed Instance Group が作成したものを含む)、ディスク、スナップショット(ラベル: 名前、リージョン、ゾーン、インスタンスタイプ)
  • Cloud Storage バケット(名前)
  • CloudSQL インスタンス(名前、リージョン)
  • BigQuery データセット・テーブル(名前、ロケーション)
  • BigTable インスタンス(名前、リージョン、ゾーン)
  • PubSub トピック・サブスクリプション(名前)

異なる種類のラベルやリソースタイプも簡単に追加できます。手順はこちら

実行されるタイミング

Iris はスケジュール実行とリソース作成時の両方で動作します。

  • すべての種類のリソースが、12 時間ごと(設定変更可能)のスケジュールでラベリングされます。一部の種類(Cloud SQL インスタンスや、インスタンスと同時に作成されるブートディスクなど)は、スケジュール時のみラベリングされます。
  • 多くのリソースは、作成と同時に即座にもラベリングされます。Iris 3 は Google Cloud Operations のログをリッスンしてこれを実現しています。

Iris 3 の新機能

Iris は、機能の追加と新しい基盤プラットフォームへの移行という両面で大幅に進化しました。

新機能

  • PubSub のトピック・サブスクリプション、Cloud SQL インスタンスのラベリングに対応
  • プロジェクトのラベルを各リソースに自動でコピーするオプション
  • ラベリング対象のプロジェクトを選択できるオプション(一部のプロジェクトのみ対象としたい場合に便利で、コスト削減にもつながります)。組織内の全プロジェクトを一括対象にすることも可能
  • オンデマンドラベリングを行わず、スケジュールラベリングのみでコストを抑えるオプション
  • プラグイン開発と設定を大幅に簡素化(詳細はこちら)
  • 品質を担保する自動テスト
  • バグ修正、最適化、各種改善(詳細はこちら)

新しいプラットフォーム

そして最大の変更点であり、名前を改めリポジトリをフォークした理由でもあるのが、Google App Engine Standard Environment の Python 2 から Python 3 への移行です。Python 2 自体は 2020 年 1 月にサポート終了を迎えており、GAE の Python 2 版はそれ以前から非推奨となっていました。

Google は、移行が困難な既存ユーザーのために Python 2 版 GAE の長期サポートを表明しています。とはいえ、開発・デプロイツール、ランタイム、API はどれも古さが否めず、この旧バージョン上での新機能開発は、困難を通り越してほぼ不可能です。さらに、Google はすべてのセキュリティ脆弱性へのパッチ適用を保証できなくなっており、Web アプリケーションにとっては看過できないリスクとなっています。

移行にあたっては、いくつか新しい API の採用が必要になりました。中でも Task Queues のサポートが廃止されたため、代わりに PubSub を採用しています。

さらに今回は、コードベースを完全に書き直す絶好の機会にもなりました。クリーンで標準的なコードスタイル、重複コードの削減など、各種の改善により、開発者やプルリクエストを送ってくださるコントリビューターの作業がぐっと楽になっています。

なぜ「Iris 3」なのか

本リリースは別リポジトリで、新しい名前のもとに公開されています。

その理由は、Python 3 版 GAE と Python 2 版 GAE の差が大きいため、(時代遅れになっているとはいえ!)できるだけ長く Python 2 版 GAE を使い続けたいというユーザーが多いためです。

「3」はもちろんバージョン番号ではなく、Python 3 版 GAE プラットフォームへのオマージュです。

Iris を試す

Iris 3 を GitHub からダウンロードし、手順に沿ってデプロイ・開発・テストしてみてください。皆さまからのフィードバックや Issue 報告をお待ちしています。そして何より、TODO.md ファイルをご覧いただき、ぜひプルリクエストをお寄せください!

GCP Auto-Tag と Iris 3 の違い

GCP Auto-Tag も、インスタンスとディスクを作成時に自動ラベリングするための DoiT 製オープンソースプロジェクトです。

両者の違いは以下のとおりです。

  • GCP Auto-Tag は Iris 3 とは異なり、作成者のメールアドレスをラベルとして付与します。また、ディスクの場合は接続先インスタンスの名前も付与します。
  • GCP Auto-Tag は、インスタンスと同時に作成されるブートディスクにも作成時点でラベルを付与します。
  • Iris 3 は Auto-Tag とは異なり、名前、ゾーン、リージョン、インスタンスタイプをラベルとして付与します。
  • Iris 3 はより幅広いリソースタイプに対応しています。
  • Iris 3 は組織内の複数プロジェクトをカバーし、プロジェクトのラベルを各リソースへコピーします。
  • Iris 3 は、デプロイ前から存在していたリソースにもラベルを付与できます。

さらに詳しく

Iris に関する関連記事はこちら。

  • リージョンなどのフィールド単位でコストを追跡する方法を解説した記事。reOptimize についての記事ですが、内容は DoiT の新しい Cloud Management Platform にもそのまま当てはまります。
  • リソースラベリングのベストプラクティス