Google データポータルで費用を可視化する

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

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

Google データポータルでの可視化の例

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

目標

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

  • 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 ビューに接続します。
  • データポータルへのリンクを提供します。これにより、データポータル ダッシュボードに保存できます。

コピーを作成するには:

  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. ダッシュボードを作成するスクリプトを実行します。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)。ビューのデータセットがまだない場合は、スクリプトがこの名前で新しいデータセットを作成します。

    スクリプトの実行が完了すると、Google データポータルにダッシュボードのリンクが表示されます。

  5. Google データポータルのリンクをクリックしてダッシュボードを開きます。

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

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

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

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

始める前に

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

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

  1. コンソールで、[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,
      EXTRACT(DATE FROM _PARTITIONTIME) AS date
    from `PROJECT_ID.BILLING_ACCOUNT_EXPORT` s
    WHERE _PARTITIONTIME >"2021-01-01"
    

    ここで、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,
      EXTRACT(DATE FROM _PARTITIONTIME) AS date
    from `PROJECT_ID_2.BILLING_ACCOUNT_2_EXPORT` s
    WHERE _PARTITIONTIME >"2021-01-01"
    
  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,
        EXTRACT(DATE FROM _PARTITIONTIME) AS date
    from `PROJECT_ID.BILLING_ACCOUNT_DATASET` s
    WHERE _PARTITIONTIME >"2021-01-01"
    

クリーンアップ

ダッシュボードを今後使用しない場合は、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. Google データポータルのダッシュボードを削除するには、Google データポータルを開いてダッシュボードを探し、 メニューから [削除] をクリックします。

次のステップ