GoogleCloudPlatform

Google Cloud Platformの課金データをBigQueryにエクスポートする

More than 1 year has passed since last update.

GCPは従量課金なので、こまめに課金額を確認してあげるといいですね!

この記事は、そんな課金額の確認に便利な方法をご紹介します。


BigQueryとは?

GCPの中のサービスの1つで、ビッグデータに対してSQLを書いてクエリを実行し、分析を行うことができるサービスです。

料金体系は大雑把に見るとデータ保存容量のストレージと、クエリ実行時に読み込んだデータ量に対する課金です。

TBを超えるデータを分析するにも便利なBigQueryですが、マシンの管理運用の手間がまったくないため100MB程度のスモールデータを適当に分析するのにも便利です。


課金データをBigQueryにエクスポートする設定

課金データをBigQueryにエクスポートするには、Cloud Console上で設定を行います。

メインメニュー -> お支払 -> 課金データのエクスポート

Screen Shot 2017-02-10 at 10.41.45.png

課金アカウントごとに、エクスポート先のGCPプロジェクトとBigQueryのDatasetを設定します。

BigQueryのDatasetとは、Tableを束ねておくための容れ物です。


Datasetの作成

Datasetを設定するためには、まずDatasetを作成する必要があるので、BigQueryのコンソールに移動します。

メインメニュー -> BigQuery

いずれかのプロダクトが利用しているGCP Projectに作成するとややこしくなるので、課金管理専用のGCPプロジェクトを作って、そこに作成してもよいかもしれません。


Create new datasetを選択

create_dataset.png


Create Dataset

DatasetIDはGCPプロジェクトの中で一意になっていれば、良いので適当なわかり易い名前でよいです。

create_dataset2.png


BigQueryにエクスポートする設定を登録

Datasetができたので、 課金データのエクスポート に戻って、BigQueryにエクスポートする設定を登録します。

作成したDatasetをプルダウンで選択して、 BigQueryエクスポートを有効化 ボタンを押せば、設定完了です!

billing_export_save.png


エクスポートされた課金データにクエリを実行する

課金データは1日毎に出力されます。

エクスポート設定を行った後、1日経つと gcp_billing_export_{Billing Account ID} のテーブルが作成され課金データが追加されます。

Tableが作られたら適当に見たい内容をクエリしましょう。

例えば以下は gcp-ug の "App Engine" の課金額を日毎に見るクエリです。

SELECT

project.id,
product,
resource_type,
start_time,
cost,
usage.amount,
usage.unit,
credits.name,
credits.amount
FROM
[your table]
WHERE
project.id = "gcp-ug"
AND product = "App Engine"
ORDER BY
1,
2,
3,
4

BigQuery Consoleで QUERY COMPOSE ボタンを押して表示されたQuery画面にクエリを書いて、 RUN QUERY ボタンを押せばクエリが実行され、結果が表示されます。

Screen Shot 2017-02-10 at 11.50.23.png

集計をしたい場合などは、GROUP BYと集計関数を使って、集計してあげればよいです。

課金アカウントに紐付いているGCP Projectの課金情報を日毎にまとめて見ることができるのも便利です。


スキーマの概要 (おまけ)


  • billing_account_id : 課金アカウントID

  • product : "App Engine", "Compute Engine" のようなリソースのプロダクト名

  • resource_type : "Frontend Instances", "Datastore Read Ops" のようなリソース名

  • start_time : 期間開始日時

  • end_time : 期間終了日時

  • project.id : GCPプロジェクトID

  • project.name : GCPプロジェクト名

  • project.labels.key : GCPプロジェクトに紐付けているLabel Key

  • project.labels.value : GCPプロジェクトに紐付けているLabel Value

  • labels.key : リソースに紐付けているLabel Key

  • labels.value : リソースに紐付けているLabel Value

  • cost : 料金

  • currency costの通貨 (米ドル)

  • currency_conversion_rate : 為替レート (全部1っぽい)

  • usage.amount : リソース使用量

  • usage.unit : リソース使用量単位

  • credits.name : 割引名 (Compute EngineだとSustained Usage Discountなどが入る)

  • credits.amount : 割引金額

リソースのLabelが出力されているので、Compute EngineのインスタンスにLabel付けておけば、Labelごとに料金集計とかもできるのかも。


Next Step

BigQueryに出力したデータをGoogle Data Stuioを利用してグラフにしてみましょう!

BigQueryにエクスポートしたGCPの課金データを可視化してみる