BigQuery Advent Calendar 2023 1日目の記事です。
この記事では BigQuery の機能の1つである billing データのエクスポートを紹介します。
billing データのエクスポート
Google Cloud の課金データ(使用量、費用予測、料金データなど)は自動的に BigQuery にエクスポートすることができます。
課金データを BigQuery にエクスポートすることで、課金状況を細かく分析することができるようになります。
BigQuery は Google Cloud の様々なサービスと連携しやすいため、使いやすい機能だと思います。
この記事では株式会社ギックスでも利用している課金データの利用方法についてご紹介します。
billing データに含まれる情報
billing データとしてエクスポートすることができるテーブルは3種類あります。
各テーブルの詳細な説明についてはリンク先をご確認ください。
-
標準の使用料金テーブル
- アカウントID、請求書の日付、サービス、SKU、プロジェクト、費用など、様々な使用料金やが含まれます。
- 特に使用したリソースに関する列が多いです。
- ギックスではこのテーブルを利用しています。
-
詳細な使用料金テーブル
- 標準の使用料金テーブルのすべての項目に加えて、リソースレベルのデータを提供する追加の項目(例: サービス使用量を生成する仮想マシンまたは SSD)が含まれます。
-
料金データテーブル
- 標準の使用料金テーブルと比較して特に料金に関する列が多いです。
- 例えば discount の情報など料金に関する詳細はこのテーブルにしか含まれていません。
なお、標準の使用料金テーブルと料金データテーブルを見比べたところ、共通の列は以下でした。
- currency_conversion_rate
- export_time
- service.id
- sku.description
- sku.id
更新頻度
あるサービスで課金が発生した場合にどれくらいの時間で billing にエクスポートされるのかは公式ドキュメントで明言されていません。
BigQuery の billing データを見る限りでは数十分に一度更新されていますが、課金発生からの数十分後に反映されているわけではないため注意が必要です。
活用事例
ギックスでは現在2つの活用事例があります。
想定外課金の検知と自動課金停止
billing データをもとに各プロジェクトの課金額を算出し、一定金額を超えたことを検知することができます。
ギックスでは検知した結果としてそのプロジェクトの課金を停止し、想定外の大量課金の発生およびクラウド破産を防いでいます。
アーキテクチャとしては次のようになります。
Workflows から BigQuery で billing データに対してクエリを発行し、プロジェクトごとの課金額を集計しています。
1つのプロジェクトを対象として一定金額を超えたことを検知するのは簡単なのですが、すべてのプロジェクトを対象とする場合は個別に設定するのが大変です。
そこで billing データのエクスポートを使えばすべてのプロジェクトの課金状況を簡単に取得できるため、それを元に一律に設定できます。
詳しくは 公式ブログ に記載しているためそちらをご参照ください。
Looker Studio でコスト状況を可視化する
ギックスでは Looker Studio でコスト状況のレポートを毎朝 slack に連携しています。
このように可視化することで、料金が突然高くなっていないかを確認できるようにしています。
各プロジェクトの前日との料金の比なども同じレポート内で出力しています。
Looker Studio を採用した理由としては、料金が無料で簡単に BigQuery と連携して可視化できるためです。
レポートはメールとして出力することができて簡単に slack に送ることができたのも良かったです。
Looker Studio の使い方についてはこの記事では取り扱いません。
詳細は公式ドキュメントをご確認ください。
Looker Studio での可視化についてはまだまだ改善の余地があり、どのような可視化を作っていくかは今後の課題です。
今後の展望
ギックスの組織規模はまだ小さいため、コストの最適化をすること自体のコストメリットが小さいです。
例えば Cloud 利用料が数十億円のような企業様であれば 1% の改善でも数千万円の改善につながるため取り組みやすいものの、ギックスではその規模に届いておらずまだ早いかなと思います。
とはいえ無駄遣いが細かく生じていることは間違いないため、引き続きコスト管理について検討していきたいです。