LoginSignup
30
19

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-02-10

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の課金データを可視化してみる

30
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
19