こんにちは! m.uriuです。
Oracle Cloud Infrastructure Advent Calendar 2025のDay23の記事です。
今回はコスト分析サービスについてのお話です。
停止し忘れたコンピュート・インスタンスやBaseDBインスタンス。
検証で使用した後、削除し忘れてずっと残っていたブート・ボリュームやロード・バランサ。
無駄に利用料金を払う羽目になった経験は、Oracle Cloudで検証したことがある方なら、誰しもあるのではないでしょうか?
検証を短期間で済ませていれば、使わなくなったリソースの停止や削除は簡単ですが、長期になったり、そもそもリソースの数が増えると全体の管理も難しくなります。
あと、Oracle Cloudあるあるだとは思うんですが、インスタンスやVCNを纏めて削除しようとすると、付随した細かいリソースが残ることが良くあります。
私自身も、インスタンス終了時に削除し損ねた追加のVNICが原因で、テスト用コンパートメントが削除できず、SR対応してもらったことがあります。
従量課金制であることがメリットであるOracle Cloudですが、その反面、不要なリソースを残してしまうと余計な利用料金が発生してしまいます。
そんな時に便利なのが、コスト分析サービスです。
テナンシ全体のリソース状況を洗い出し、課金が発生しているリソースを発見できます。
この記事では、コスト分析の基本的な操作と、私が良く使うおすすめの使い方を紹介します。
自宅だけでなく、Oracle Cloud環境の大掃除を済ませてしまいましょう。
目次
コスト分析とは
コスト分析サービスでは、主にOracle Cloudの利用料金のトラッキングを行うサービスです。
指定した期間内で利用したサービスの利用料金を纏め、グラフ、表形式でチャートを表示できます。
フィルタ機能を用いることで、特定のサービスやコンパートメントに絞って出力することも可能です。
また、出力したチャートをpdfやcsvでダウンロードし、報告資料の作成などに活用できます。

コスト分析の使い方
まずは基本的なコスト分析の使い方をご紹介します。
そんなの知っているよ、という方は「おすすめのフィルタ設定」まで飛ばしてください。
チャートを表示
Oracle Cloudコンソールのメニューの「請求とコスト管理」>「コスト管理」>「コスト分析」を選択して、コスト分析画面を表示できます。
※1.ホームリージョンを選択しないとコスト分析が利用できないので、複数リージョンを利用している場合は変更しておきましょう。
※2.複数テナンシを管理している場合、子テナンシ側では表示できません。
この画面を開いた時点で、「サービス別コスト」のチャートが表示されますが、
「コスト分析問合せフィールド(赤枠)」を入力し、「適用」をクリックすることで、カスタマイズしたチャートを表示できます。
「コスト分析問合せフィールド」の各項目について解説します。

「レポート」はコスト分析問合せフィールドのテンプレート設定のようなものです。
ここを変更すると、コスト分析問合せフィールドの項目を自動的に入力してくれます。
粒度やフィルタ等の項目を弄った後、その設定を「新規レポートとして保存」で、新しいテンプレートとして保存もできます。
チャートを表示させるだけならどれを選択しても問題ないです。(フィルタとグループ化ディメンションを弄ると別の「レポート」と同じチャートにできます。)

「開始日(UTC)/終了日(UTC)」は、チャートで表示する期間を指定します。
最大366日間まで選択できます。期間を長く設定しても、チャートの表示時間には大差ありません。

「粒度」は、「毎時/毎日/毎月」を選択してチャートの粒度を指定できます。
また、「開始日/終了日」の設定によっては、選択できない粒度があります。
※毎時:24時間まで。毎日:92日間まで。毎月:366日間まで。

「表示」は、チャートで表示するデータの単位を設定します。
料金を表示する場合は「コスト」、リソース毎の使用量(ストレージのGB/月やLBの利用時間/月等)で表示できます。

「フィルタ」は、チャートで表示するデータを絞ることができます。
特定のサービスや特定のコンパートメント等に絞って表示させたいときなどに使用します。
また、複数の異なるフィルタを同時に設定することも可能です。
(例:コンパートメント+サービス)

「グループ化ディメンション」は、チャートに表示するデータのグループ化のルールを指定します。
サービスやコンパートメント、タグなどでグループ化して表示できます。

コスト分析問い合わせフィールド使用例
実際に、コスト分析問合せフィールドを入力してチャートを出力してみます。
「グループ化ディメンション」でサービス、「フィルタ」で私のコンパートメントを指定しました。一定量のブロック・ストレージがあり、最近Databaseを起動したことが良くわかりますね。

おすすめのフィルタ設定
ここからは、私が利用料金の確認でよく使用しているフィルタ設定を紹介します。
補足.コンパートメント階層について
OCIのコンパートメントは、ルート・コンパートメントを起点に最大6階層まで子コンパートメントを作成できます。
コンパートメント階層の表記は、「ルート・コンパートメント」の直下に「コンパートメントA」、その下に「コンパートメントB」と作成した場合、「ルート・コンパートメント/コンパートメントA/コンパートメントB」のようになります。
月単位のコンパートメントごとの利用料金
直近3か月で、月単位のサービス利用料金を、コンパートメントごとに出力する設定です。定期的に弊社テナンシの利用料金調査をしているのですが、管理しているコンパートメントが多いのでこの設定はよく使います。
ミソは表示形式を「コンパートメント・パス」に指定することで、コンパートメント階層すべてを表示できます。


表示形式のデフォルト値は「コンパートメント名」ですが、これは子コンパートメント名のみ表示し、親コンパートメント名が表示されないため、階層が分からなくなります。テナンシ内のコンパートメントが多い場合や、組織管理で複数のテナンシを管理している場合は、コンパートメントの判別が難しくなります。

課金が発生しているリソースの種類とOCIDを特定
この手順で、課金が発生しているリソースの種類とOCIDを絞り込めます。
特定のコンパートメント内で、覚えのない課金が発生している場合に使用します。
「017_m.uryuuコンパートメントで、BaseDBとストレージサービス以外に課金が発生したので、原因を特定する。」ケースと仮定して解説します。
まずサービスの種類の絞り込み方から。「フィルタ」で「017_m.uryuu」コンパートメントを選択して出力結果を絞り込みます。
このコンパートメントの選択画面ですが、「パス別」を選択すると、前項のようにコンパートメントの階層すべてを表示してくれるので、設定しやすくなります。
ちなみに画像にある「017_m.uryuu」と「017_m.uryuu/*」の違いですが、後者を選ぶと「017_m.uryuu」コンパートメントと、「017_m.uryuu/handson」のような、その配下の子コンパートメントすべてをフィルタ条件に含めることができます。

「グループ化ディメンション」にサービスを指定して、サービスの種別を絞り込みます。

12/18にComputeサービスで課金が発生していることが分かりました。

もしサービスの種類を詳細に特定したい場合は、「グループ化ディメンション」を「サービスと製品の説明」にすると、コンピュートのシェイプやメモリ等、リソースの詳細を表示できます。

次は具体的にどのリソースなのか調べます。先ほどの設定に、「フィルタ」をもう一つ追加します。サービスの中から、表示されていた「COMPUTE」を選択します。

フィルタにサービスが追加されました。「グループ化ディメンション」で「リソースOCID」を選択して、OCIDが表示されるようにします。

表の列にOCIDが表示されたチャートを出力できました。マウスオーバーすれば、OCIDを確認できるので、この値をリソース・エクスプローラで検索すればリソースにたどり着くことができます。
※一部サービスはリソース・エクスプローラーに対応していないので、OCID内に記述されているサービス名等をヒントに探してみてください。

さいごに
コスト分析サービスで、テナンシ内の利用料金のチャートを出力する方法と、おすすめの設定について紹介しました。
特にコンパートメント・パスの表示は、コンパートメントの数が多くなるほど有用化と思いますので、ぜひ使ってみてください。
それでは、また来年お会いしましょう。