GCPは従量課金なので、こまめに課金額を確認してあげるといいですね!
この記事は、そんな課金額の確認に便利な方法をご紹介します。
BigQueryとは?
GCPの中のサービスの1つで、ビッグデータに対してSQLを書いてクエリを実行し、分析を行うことができるサービスです。
料金体系は大雑把に見るとデータ保存容量のストレージと、クエリ実行時に読み込んだデータ量に対する課金です。
TBを超えるデータを分析するにも便利なBigQueryですが、マシンの管理運用の手間がまったくないため100MB程度のスモールデータを適当に分析するのにも便利です。
課金データをBigQueryにエクスポートする設定
課金データをBigQueryにエクスポートするには、Cloud Console上で設定を行います。
メインメニュー -> お支払 -> 課金データのエクスポート
課金アカウントごとに、エクスポート先のGCPプロジェクトとBigQueryのDatasetを設定します。
BigQueryのDatasetとは、Tableを束ねておくための容れ物です。
Datasetの作成
Datasetを設定するためには、まずDatasetを作成する必要があるので、BigQueryのコンソールに移動します。
メインメニュー -> BigQuery
いずれかのプロダクトが利用しているGCP Projectに作成するとややこしくなるので、課金管理専用のGCPプロジェクトを作って、そこに作成してもよいかもしれません。
Create new datasetを選択
Create Dataset
DatasetIDはGCPプロジェクトの中で一意になっていれば、良いので適当なわかり易い名前でよいです。
BigQueryにエクスポートする設定を登録
Datasetができたので、 課金データのエクスポート
に戻って、BigQueryにエクスポートする設定を登録します。
作成したDatasetをプルダウンで選択して、 BigQueryエクスポートを有効化
ボタンを押せば、設定完了です!
エクスポートされた課金データにクエリを実行する
課金データは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
ボタンを押せばクエリが実行され、結果が表示されます。
集計をしたい場合などは、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の課金データを可視化してみる