BigQuery への Cloud Billing データのエクスポートと Looker Studio を組み合わせることで、Google Cloud の費用情報を常に最新の状態に保つことができます。
このページでは、Cloud Billing データを使用して課金利用状況と費用に関する分析情報のダッシュボードを設定する方法について説明します。ダッシュボードを使用すると、Compute Engine リソースの使用量など、Google Cloud の費用に関する情報を確認できます。
ダッシュボードを設定するには、このチュートリアルに沿って操作するか、次の動画をご覧ください。
目標
このチュートリアルでは、次のタスクを行う方法について説明します。
Cloud Shell を使用して 課金利用状況と費用に関する分析情報のダッシュボードを設定します。
複数の Cloud 請求先アカウントが存在する場合や、Cloud 請求先アカウントに米ドル以外の通貨が設定されている場合など、高度なケースに合わせてダッシュボードの表示を変更する方法について説明します。
費用
このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。
通常、Cloud Billing データを BigQuery に保存するための費用は無料か、最低料金が課金されます。BigQuery データセットのサイズによっては、分析用にデータをクエリする際に費用が発生する可能性があります。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
BigQuery への Cloud Billing データのエクスポートを設定する
ダッシュボードを使用するには、Cloud Billing の標準データと詳細データに対して BigQuery へのエクスポートを有効にする必要があります。
データのエクスポートを有効にしてから、データセットに Cloud Billing データが取り込まれるまでに 1 日ほどかかります。ネットワーク下り(外向き)料金が最初に表示され、次に、VM の料金、Pub/Sub の使用量などが表示されるはずです。データセットでデータを取得したら、取得したデータに対してクエリを実行できます。
組織ですでに BigQuery のエクスポートが設定されている場合は、データセットをホストするプロジェクトに BigQuery ビューの作成権限を付与する必要があります。
BigQuery ビュー用に新しいデータセットを作成する場合は、BigQuery データセットの作成権限が必要です。
Google Cloud 環境に関する次の情報を取得します。
- Cloud Billing BigQuery データセットがホストされているプロジェクト ID。
- 標準の費用データと詳細な費用データのエクスポートのデータセット名。通常、費用データのエクスポートは同じデータセット内にあります。
ダッシュボードのコピーを作成する
ダッシュボードの独自のコピーを作成するには、まず、プロセスを自動化する GitHub リポジトリのクローンを作成します。この手順では Cloud Shell を使用します。Cloud Shell は Google Cloud のインタラクティブなシェル環境で、ブラウザで使用できます。
リポジトリ内のセットアップ スクリプトは次のタスクを行います。
- 新しい BigQuery データセットを作成し、標準と詳細の費用データのエクスポートからデータを取得するビューを作成します。
- ダッシュボード テンプレートをコピーして、データの BigQuery ビューに接続します。
- Looker Studio へのリンクを提供します。このリンクは Looker Studio ダッシュボードに保存できます。
コピーを作成するには:
Cloud Shell で GitHub リポジトリを開きます。
billboard
ディレクトリに移動します。cd examples/billboard
次のコマンドを実行して、スクリプトの Python 環境を設定します。
rm -rf bill-env pip install virtualenv virtualenv bill-env source bill-env/bin/activate pip install -r requirements.txt
ダッシュボードを作成するスクリプトを実行します。API 呼び出しを行うために Cloud Shell の認可が必要になることがあります。
python billboard.py \ -pr 'PROJECT_ID' \ -se 'STANDARD_BILLING_EXPORT_DATASET' \ -de 'DETAILED_BILLING_EXPORT_DATASET' \ -bb 'BILLBOARD_DATASET'
変数は次のとおりです。
- PROJECT_ID: Cloud Billing データセットをホストするプロジェクト ID。
- STANDARD_BILLING_EXPORT_DATASET: 標準の費用データ エクスポートを含む BigQuery データセット。
- DETAILED_BILLING_EXPORT_DATASET: 詳細な使用料金データのエクスポートを含む BigQuery データセット。
- BILLBOARD_DATASET: ダッシュボードの BigQuery ビューが作成される BigQuery データセットの名前(例:
example_dashboard_views
)。ビューのデータセットがまだない場合は、スクリプトがこの名前で新しいデータセットを作成します。
スクリプトの実行が完了すると、Looker Studio にダッシュボードのリンクが表示されます。
Looker Studio のリンクをクリックしてダッシュボードを開きます。
Looker Studio で [Edit and share] をクリックしてダッシュボードを保存します。データソースをレポートに追加するように求められたら、[Add to report] をクリックします。
Looker Studio のホームページからダッシュボードにアクセスできるようになりました。
(上級者向け)複数の Cloud 請求先アカウントのデータを変更する
ダッシュボードに複数の Cloud 請求先アカウントのデータを含める場合は、すべての Cloud 請求先アカウントの課金データのエクスポートを含むように、BigQuery ビューを変更します。
始める前に
追加する Cloud 請求先アカウントごとに、チュートリアルの前提条件のすべての手順を行います。
BigQuery ビューを更新して追加の Cloud Billing エクスポートを含める
Google Cloud コンソールで、[BigQuery] ページを開きます。
ダッシュボード用に作成したデータセットを含むプロジェクトを選択します。
[エクスプローラ] パネルでプロジェクトを開き、データセットを開きます。
ビルボード ビューをクリックして詳細を表示します。このビューでは、標準費用と使用状況データのエクスポートをクエリします。
[詳細] タブをクリックしてから、[クエリを編集] をクリックします。ビューのクエリは、次のようになります。
SELECT *, COALESCE((SELECT SUM(x.amount) FROM UNNEST(s.credits) x),0) AS credits_sum_amount, COALESCE((SELECT SUM(x.amount) FROM UNNEST(s.credits) x),0) + cost as net_cost, PARSE_DATE("%Y%m", invoice.month) AS Invoice_Month, _PARTITIONDATE AS date from `PROJECT_ID.BILLING_ACCOUNT_EXPORT` s WHERE _PARTITIONDATE > DATE_SUB(CURRENT_DATE(), INTERVAL 13 MONTH)
ここで、PROJECT_ID は Cloud Billing の BigQuery 標準費用データのエクスポートを含むプロジェクトです。BILLING_ACCOUNT_EXPORT は、標準費用データを含む BigQuery テーブルの名前です。
既存のクエリを複製します。
FROM
句で、プロジェクト ID と BigQuery テーブルを追加の Cloud 請求先アカウントの情報に置き換えます。2 つのクエリの間に
UNION ALL
演算子を追加して、データを結合します。最終的なクエリは次のようになります。これは、それぞれ PROJECT_ID_1 と PROJECT_ID_2 にある BILLING_ACCOUNT_1 と BILLING_ACCOUNT_2 のデータ エクスポートを組み合わせたものです。SELECT *, --query for BILLING_ACCOUNT_1 COALESCE((SELECT SUM(x.amount) FROM UNNEST(s.credits) x),0) AS credits_sum_amount, COALESCE((SELECT SUM(x.amount) FROM UNNEST(s.credits) x),0) + cost as net_cost, EXTRACT(DATE FROM _PARTITIONTIME) AS date FROM `PROJECT_ID_1.BILLING_ACCOUNT_1_EXPORT` s WHERE _PARTITIONTIME >"2021-01-01" UNION ALL SELECT *, --query for BILLING_ACCOUNT_2 COALESCE((SELECT SUM(x.amount) FROM UNNEST(s.credits) x),0) AS credits_sum_amount, COALESCE((SELECT SUM(x.amount) FROM UNNEST(s.credits) x),0) + cost as net_cost, PARSE_DATE("%Y%m", invoice.month) AS Invoice_Month, _PARTITIONDATE AS date from `PROJECT_ID_2.BILLING_ACCOUNT_2_EXPORT` s WHERE _PARTITIONDATE > DATE_SUB(CURRENT_DATE(), INTERVAL 13 MONTH)
詳細な費用と使用状況データをクエリする billboard_detail ビューに対して、上記の手順を繰り返します。
米ドルと異なる通貨を使用しているアカウントがある場合は、この手順を繰り返し、次の例のように
currency_conversion_rate
列を使用して米ドルに換算します。select *, (COALESCE((SELECT SUM(x.amount) FROM UNNEST(s.credits) x),0))/currency_conversion_rate AS credits_sum_amount, (COALESCE((SELECT SUM(x.amount) FROM UNNEST(s.credits) x),0))/currency_conversion_rate + cost/currency_conversion_rate as net_cost, 'USD' as net_cost_currency, PARSE_DATE("%Y%m", invoice.month) AS Invoice_Month, _PARTITIONDATE AS date from `PROJECT_ID.BILLING_ACCOUNT_DATASET` s WHERE _PARTITIONDATE > DATE_SUB(CURRENT_DATE(), INTERVAL 13 MONTH)
クリーンアップ
ダッシュボードを今後使用しない場合は、GitHub リポジトリのクローンを作成し、-clean
オプションを指定してダッシュボード スクリプトを実行します。このスクリプトは BigQuery のビューを削除しますが、BigQuery のエクスポート データセットはそのまま残ります。
Cloud Shell で GitHub リポジトリを開きます。
billboard
ディレクトリに移動します。cd examples/billboard
次のコマンドを実行して、スクリプトの Python 環境を設定します。
pip install virtualenv virtualenv bill-env source bill-env/bin/activate pip install -r requirements.txt
クリーンアップ コマンドを実行します。
python billboard.py \ -pr 'PROJECT_ID' \ -se 'STANDARD_BILLING_EXPORT_DATASET' \ -de 'DETAILED_BILLING_EXPORT_DATASET' \ -bb 'BILLBOARD_DATASET' \ -clean yes
変数は次のとおりです。
- PROJECT_ID: Cloud Billing データセットをホストするプロジェクト ID。
- STANDARD_BILLING_EXPORT_DATASET: 標準の使用料金データのエクスポートを含む BigQuery データセット。
- DETAILED_BILLING_EXPORT_DATASET: 詳細な使用料金データのエクスポートを含む BigQuery データセット。
- BILLBOARD_DATASET: ダッシュボードの BigQuery ビューの作成に使用した BigQuery データセット。
Looker Studio ダッシュボードを削除するには、Looker Studio を開き、ダッシュボードから メニューで、[削除] をクリックします。
次のステップ
Google Cloud での FinOps の実装と費用のモニタリングに関するベスト プラクティスを確認する。