今月どれくらい使った？どれくらい使いそう？Cloud Billingのご紹介

# 今月どれくらい使った？どれくらい使いそう？Cloud Billingのご紹介

日本情報通信の中根です。
本記事は(ちょっと遅刻しましたが)[弊社のアドベントカレンダー](https://qiita.com/advent-calendar/2021/niandc_teamgcp)6日目の記事になります。  

GCPをご利用されていく中でクラウドの利用状況やコストがかかりすぎていないか、どうすれば俯瞰的に確認できるか、といった内容をよくご質問いただきます。
GCPでは[Cloud Billing](https://cloud.google.com/billing/docs/concepts)という機能を持っています。
あまりCloud Billingについて触れている記事は見ませんが管理者の視点では非常に便利な機能となっておりますので今回はこの機能について触れたいと思います。

## TL;DR

- 実は更新頻度が高いサービス
- Cloud BillingのレポートだけでGCPの利用状況をほぼ把握できる。
- レポートで事足りても課金データエクスポートはしておいたほうが良い。
- 使いすぎ防止のアラートは閾値を超過しそうだったら通知してくれる機能がある

## Cloud Billingって？

Cloud BillingはGCPの課金情報を確認するためのいくつかのサービスが統合されています。
主な機能として

- 課金リソースの管理
- レポート
- BigQuery/GCSへの課金データエクスポート
- 利用料金によるアラート通知

といったものがあります。
実は更新頻度が高いサービスで気がつくと新機能が増えている、改善されていることがあるサービスとなります。


### 課金リソースの管理

GCPではプロジェクトの支払い情報を[**請求先アカウント**](https://cloud.google.com/billing/docs/concepts#billing_account)というリソースにて集約します。
プロジェクトと請求先アカウントを紐付けるのがCloud Billingの機能となります。

GCPをご利用されるときにプロジェクトと請求先アカウントの概念について混乱されることが多いです。

上記リンクにも説明画像がありますが基本的には1つの請求先アカウントで複数のプロジェクトを紐付ける**1対多**でご利用されることが多いと思います。

### レポート

Cloud Billingの中でもっとも使われている機能になるかと思います。
請求先アカウントに紐づく利用状況を俯瞰して確認する機能になります。

Cloud Billingのサービストップ画面では費用の傾向やプロジェクトやサービスのTop5が表示されています。
だいたいはこの画面で充足してしまします。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532023/0cc37e05-33d1-8604-5ff3-62fe4261cce4.png" width="800">

プロジェクト数やSKUを任意の値で抽出/集約を行いたい場合はさらにレポートがマッチしています。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532023/79adb047-78d4-9f7a-09e4-c28ecac33bf7.png" width="800">

ここではプロジェクトやサービス、SKU単位での抽出/集約が可能となります。
また、過去の利用状況をもとに向こう12ヶ月の利用予測も表示されます。
下記の例では11月より日当たりの利用料が増加後一定なのでその傾向が続く想定での予測となっています。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532023/46afe091-e105-ad0f-b780-2fd1027da87f.png" width="800">

お客様より現在の利用状況や今後の予想を聞かれることが多いですが実はCloud Billingの機能だけで確認される内容の90%ぐらいは対応できます。

### BigQuery/GCSへの課金データエクスポート

では残りの10%はどのような場合でしょうか。
それはプロジェクトやサービスレベルで細かな抽出/集約が条件となるときです。

その場合はレポートだけでは対応できないので外部ツールを使用してレポーティングする必要があります。
そのためにBigQueryやGCSに課金データエクスポートし他サービスにてデータを利用できるようにする必要があります。

この機能でエクスポートできるデータは3つのテーブルに別れます。

#### 標準的な使用料金表

[標準的な使用料金表](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#standard-usage-cost-data-schema)ではプロジェクトで利用されているSKUレベルがエクスポートされます。
レポートで見られる範囲と大体同じになります。
Googleより[出力したデータへのサンプルクエリ](https://cloud.google.com/billing/docs/how-to/bq-examples#total-costs-on-invoice)が用意されていますのでまずは実行してみると良いでしょう。

#### 詳細な使用料金表

[詳細な使用料金表](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#detailed-usage-cost-data-schema)ではリソースレベルのエクスポートとなります。
標準的な使用料金表では「AプロジェクトのSSD使用時間」という粒度でしたが、詳細な使用料金表では「Aプロジェクトの**XXXインスタンスの**SSD使用時間」といった粒度になります。
より詳細な分析に使用できますがデータ量も増えてしまうので注意が必要です。

#### 料金表

[料金表](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#pricing-data-schema)はサービスの価格データが含まれます。
利用場面としては通過レートが含まれますので通過換算が必要な場合はこちらをエクスポートしていると便利です。

### エクスポート設定はいつやるべきか

あまり分析とかしないんだけど設定したほうがよいですか？という質問もよくいただきます。
データは設定した日からエクスポートされます。
必要になったときに設定してもデータはその日からとなり過去のデータを得ることができません。
ですので私はレポートの利用だけを想定していても利用開始時に設定をしておくと推奨しています。

### 利用料金によるアラート通知

レポートが能動的な利用方法であればアラート通知は受動的な利用方法になります。
[予算](https://cloud.google.com/billing/docs/how-to/budgets)という閾値を設けて設定が可能となります。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/532023/79d9316a-5aa8-f80a-7cd6-a83418cf0c48.png" width="800">

閾値は指定の値だけでなく、レポートにもあった[予測値を閾値とすることも可能](https://cloud.google.com/billing/docs/how-to/budgets#:~:text=%5B%E4%BA%88%E6%B8%AC%5D%20%E8%B2%BB%E7%94%A8%E3%81%AE%E3%81%97%E3%81%8D%E3%81%84%E5%80%A4%E3%83%AB%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%AF%E3%80%81%E4%BA%88%E6%B8%AC%E8%B2%BB%E7%94%A8%EF%BC%88%E7%8F%BE%E5%9C%A8%E3%81%AE%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E4%BA%88%E7%AE%97%E6%9C%9F%E9%96%93%E3%81%AE%E7%B5%82%E4%BA%86%E6%99%82%E7%82%B9%E3%81%BE%E3%81%A7%E3%81%A7%E8%A8%88%E7%AE%97%E3%81%95%E3%82%8C%E3%82%8B%EF%BC%89%E3%81%8C%E3%81%97%E3%81%8D%E3%81%84%E5%80%A4%E3%82%92%E8%B6%85%E3%81%88%E3%82%8B%E3%81%A8%E9%80%9A%E7%9F%A5%E3%81%8C%E9%80%81%E4%BF%A1%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%E3%81%9F%E3%81%A8%E3%81%88%E3%81%B0%E3%80%81%24100%20%E3%81%AE%E4%BA%88%E7%AE%97%E9%A1%8D%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%E4%BA%88%E6%B8%AC%E8%B2%BB%E7%94%A8%E3%81%AE%E3%82%A2%E3%83%A9%E3%83%BC%E3%83%88%E3%82%92%20110%25%20%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%9F%E5%A0%B4%E5%90%88%E3%80%81%E4%BA%88%E7%AE%97%E6%9C%9F%E9%96%93%E3%81%AE%E7%B5%82%E4%BA%86%E3%81%BE%E3%81%A7%E3%81%AB%E5%88%A9%E7%94%A8%E9%A1%8D%E3%81%8C%20%24110%20%E3%82%92%E8%B6%85%E3%81%88%E3%82%8B%E3%81%A8%E4%BA%88%E6%B8%AC%E3%81%95%E3%82%8C%E3%81%9F%E6%99%82%E7%82%B9%E3%81%A7%E3%82%A2%E3%83%A9%E3%83%BC%E3%83%88%E9%80%9A%E7%9F%A5%E3%81%8C%E5%B1%8A%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82)です。

通知する方法もメールの他にシステマチックに利用できるようにCloud Pub/Subとの連携も可能です。
ドキュメントにて[Pub/SubとCloud Functionsを利用してSlackへ通知するガイド](https://cloud.google.com/billing/docs/how-to/notify)があります。


クラウドサービスではコスト意識がオンプレミスと異なってきます。
少額でもよいので意識付けの意味でもアラートの設定をおすすめしています。

## まとめ

Cloud Billingは非常に強力なコスト管理ツールになります。
現在過去だけでなく将来も見られるのはGCPはじめ変化の大きいクラウドサービスを利用する上で非常に便利ですので是非使ってみてください。