Looker Studio を使用して費用を可視化する


BigQuery への Cloud Billing データのエクスポートと Looker Studio を組み合わせることで、Google Cloud の費用情報を常に最新の状態に保つことができます。

このページでは、Cloud Billing データを使用して課金利用状況と費用に関する分析情報のダッシュボードを設定する方法について説明します。ダッシュボードを使用すると、Compute Engine リソースの使用量など、Google Cloud の費用に関する情報を確認できます。

Looker Studio でのビジュアリゼーションの例

ダッシュボードを設定するには、このチュートリアルに沿って操作するか、次の動画をご覧ください。

目標

このチュートリアルでは、次のタスクを行う方法について説明します。

  • Cloud Shell を使用して 課金利用状況と費用に関する分析情報のダッシュボードを設定します。

  • 複数の Cloud 請求先アカウントが存在する場合や、Cloud 請求先アカウントに米ドル以外の通貨が設定されている場合など、高度なケースに合わせてダッシュボードの表示を変更する方法について説明します。

費用

このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。

通常、Cloud Billing データを BigQuery に保存するための費用は無料か、最低料金が課金されます。BigQuery データセットのサイズによっては、分析用にデータをクエリする際に費用が発生する可能性があります。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。 新しい Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

始める前に

  1. BigQuery への Cloud Billing データのエクスポートを設定する

    ダッシュボードを使用するには、Cloud Billing の標準データと詳細データに対して BigQuery へのエクスポートを有効にする必要があります。

    データのエクスポートを有効にしてから、データセットに Cloud Billing データが取り込まれるまでに 1 日ほどかかります。ネットワーク下り(外向き)料金が最初に表示され、次に、VM の料金、Pub/Sub の使用量などが表示されるはずです。データセットでデータを取得したら、取得したデータに対してクエリを実行できます。

  2. 組織ですでに BigQuery のエクスポートが設定されている場合は、データセットをホストするプロジェクトに BigQuery ビューの作成権限を付与する必要があります。

    BigQuery ビュー用に新しいデータセットを作成する場合は、BigQuery データセットの作成権限が必要です。

  3. Google Cloud 環境に関する次の情報を取得します。

    • Cloud Billing BigQuery データセットがホストされているプロジェクト ID。
    • 標準の費用データと詳細な費用データのエクスポートのデータセット名。通常、費用データのエクスポートは同じデータセット内にあります。

ダッシュボードのコピーを作成する

ダッシュボードの独自のコピーを作成するには、まず、プロセスを自動化する GitHub リポジトリのクローンを作成します。この手順では Cloud Shell を使用します。Cloud Shell は Google Cloud のインタラクティブなシェル環境で、ブラウザで使用できます。

リポジトリ内のセットアップ スクリプトは次のタスクを行います。

  • 新しい BigQuery データセットを作成し、標準と詳細の費用データのエクスポートからデータを取得するビューを作成します。
  • ダッシュボード テンプレートをコピーして、データの BigQuery ビューに接続します。
  • Looker Studio へのリンクを提供します。このリンクは Looker Studio ダッシュボードに保存できます。

コピーを作成するには:

  1. Cloud Shell で GitHub リポジトリを開きます。

    Cloud Shell で開く

  2. billboard ディレクトリに移動します。

    cd examples/billboard
    
  3. 次のコマンドを実行して、スクリプトの Python 環境を設定します。

    rm -rf bill-env
    pip install virtualenv
    virtualenv bill-env
    source bill-env/bin/activate
    pip install -r requirements.txt
    
  4. ダッシュボードを作成するスクリプトを実行します。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 にダッシュボードのリンクが表示されます。

  5. Looker Studio のリンクをクリックしてダッシュボードを開きます。

  6. Looker Studio で [Edit and share] をクリックしてダッシュボードを保存します。データソースをレポートに追加するように求められたら、[Add to report] をクリックします。

Looker Studio のホームページからダッシュボードにアクセスできるようになりました。

(上級者向け)複数の Cloud 請求先アカウントのデータを変更する

ダッシュボードに複数の Cloud 請求先アカウントのデータを含める場合は、すべての Cloud 請求先アカウントの課金データのエクスポートを含むように、BigQuery ビューを変更します。

始める前に

追加する Cloud 請求先アカウントごとに、チュートリアルの前提条件のすべての手順を行います。

BigQuery ビューを更新して追加の Cloud Billing エクスポートを含める

  1. Google Cloud コンソールで、[BigQuery] ページを開きます。

    [BigQuery] に移動

  2. ダッシュボード用に作成したデータセットを含むプロジェクトを選択します。

  3. [エクスプローラ] パネルでプロジェクトを開き、データセットを開きます。

  4. ビルボード ビューをクリックして詳細を表示します。このビューでは、標準費用と使用状況データのエクスポートをクエリします。

  5. [詳細] タブをクリックしてから、[クエリを編集] をクリックします。ビューのクエリは、次のようになります。

    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 テーブルの名前です。

  6. 既存のクエリを複製します。FROM 句で、プロジェクト ID と BigQuery テーブルを追加の Cloud 請求先アカウントの情報に置き換えます。

  7. 2 つのクエリの間に UNION ALL 演算子を追加して、データを結合します。最終的なクエリは次のようになります。これは、それぞれ PROJECT_ID_1PROJECT_ID_2 にある BILLING_ACCOUNT_1BILLING_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)
    
  8. 詳細な費用と使用状況データをクエリする billboard_detail ビューに対して、上記の手順を繰り返します。

  9. 米ドルと異なる通貨を使用しているアカウントがある場合は、この手順を繰り返し、次の例のように 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 のエクスポート データセットはそのまま残ります。

  1. Cloud Shell で GitHub リポジトリを開きます。

    Cloud Shell で開く

  2. billboard ディレクトリに移動します。

    cd examples/billboard
    
  3. 次のコマンドを実行して、スクリプトの Python 環境を設定します。

    pip install virtualenv
    virtualenv bill-env
    source bill-env/bin/activate
    pip install -r requirements.txt
    
  4. クリーンアップ コマンドを実行します。

    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 データセット。
  5. Looker Studio ダッシュボードを削除するには、Looker Studio を開き、ダッシュボードから メニューで、[削除] をクリックします。

次のステップ