Cloud Service
OCI Cost Analysis / Budgets
テナンシのクラウド利用コストを可視化・分析し、コンパートメントやタグ単位の予算としきい値アラートで超過を早期に検知する仕組み。AWS の Cost Explorer と Budgets に相当。
- 1.コストを期間・サービス・タグ単位で可視化し傾向を分析する。
- 2.予算を作成し、実績や予測がしきい値を超えると通知で警告する。
- 3.可視化と予算アラートが中心で、課金そのものを止める機能ではない。
解決する課題
請求書が届いてから「今月は高かった」と気づく後追いの運用から脱却し、コストの内訳と増加要因をリアルタイムに近い形で把握できます。
- 何にいくら使っているのか、サービス別・コンパートメント別・タグ別に内訳を知りたい
- コストの推移とトレンドを見て、急増したリソースや無駄を特定したい
- チーム/プロジェクトごとに上限(予算)を設定し、超えそうなときに早めに気づきたい
- 月末の請求を待たずに、予測ベースで着地額を見積もって意思決定したい
- 複数チームにコストを**配賦(チャージバック/ショーバック)**するための根拠データが欲しい
主要概念と用語
- Cost Analysis(コスト分析): コンソール上でコストを期間・粒度・グルーピングを変えて可視化・集計する画面。AWS の Cost Explorer に相当する
- Budget(予算): 特定の対象(コンパートメントまたはタグ)に対して月次などの上限金額を定義するオブジェクト。実績や予測がしきい値に達するとアラートを送る
- Budget Alert Rule(アラートルール): 予算に紐づくしきい値設定。実際の支出(actual spend) か 予測支出(forecasted spend) のどちらを基準に、金額または割合(例 80 パーセント)で発火するかを定義する
- コスト追跡タグ(Cost-Tracking Tag): 定義済みタグ(Defined Tag)に「コスト追跡」属性を付与したもの。これを付けたリソースのコストを Cost Analysis や予算でグルーピング・絞り込みできる
- Usage Report(使用状況レポート): テナンシのコスト・使用量明細を CSV として定期生成し、専用の Object Storage バケットに出力する詳細データ。BI ツールや外部分析に取り込む
- Cost and Usage Reports / FOCUS: コストと使用量の詳細を業界標準フォーマット(FOCUS)でも取得できる出力形式。マルチクラウドの横断分析に向く
- コンパートメント(Compartment): コストを集計・配賦する主要な境界。組織やプロジェクトをコンパートメントで切ると、そのままコスト配賦の単位になる
- 予測(Forecast): 過去の使用傾向から月末などの着地額を推定する仕組み。予測ベースの予算アラートに使われる
仕様・制限・クォータ
- 予算の対象はコンパートメント単位またはタグ単位のいずれか。1 つの予算で「コンパートメント」と「タグ」を同時に対象にはできない
- 予算の評価サイクルは原則として月次で、リセットのタイミング(月初など)を指定できる
- 1 つの予算に複数のアラートルールを設定できる(例: 50 パーセント・80 パーセント・100 パーセントで段階通知)
- コスト追跡タグはあらかじめ作成・適用が必要で、付与する前に発生したコストは遡って分類されない。導入初期にタグ設計を固めることが重要
- コストデータには反映の遅延がある。利用が記録されてから Cost Analysis や予算に反映されるまで時間差があるため、分単位のリアルタイム監視には向かない
- 予算アラートは通知であって課金停止ではない。しきい値を超えてもリソースは動き続け、自動でサービスが止まることはない
- Usage Report は専用バケットに出力され、参照には対応する権限が必要。生成頻度やファイル単位は仕様に従う
- 予算やアラートの個数には**テナンシ単位の上限(クォータ)**があり、必要に応じてサービスリクエストで引き上げる
内部の仕組み
OCI の課金エンジンが各サービスの使用量を継続的に計測・集計し、その結果が Cost Analysis・Budgets・Usage Report という複数の出口に供給されます。
- 計測 → 集計 → 可視化/評価の流れになっており、Cost Analysis は集計済みデータをクエリして表示する読み取り系、Budgets は同じ集計データを定期的に評価してしきい値判定を行う仕組み
- 予算の評価は周期的に実行され、対象(コンパートメントまたはタグ)に紐づく当月の実績コストを集計し、各アラートルールのしきい値と比較する。予測ベースのルールでは、推定した着地額をしきい値と比較する
- しきい値を満たすと、予算は Notifications(ONS)トピックまたはメール宛先へアラートを送る。ここから先は Monitoring のアラームと同様に、Email・PagerDuty・Slack・Functions などへ配信できる
- タグ単位の集計は、リソースに付与されたコスト追跡タグをキーに行われる。タグが付いていないコストは「タグなし」として扱われ、按分されない
- 詳細な明細が要る場合は Usage Report が CSV を Object Storage に出力し、これを Autonomous Database や外部 BI に取り込んで自由に分析する
Budgets のアラートは「超えそう/超えた」を知らせるだけで、リソースを自動停止しません。コストの強制ガードが必要なら、Quota(クォータ)でリソース作成を制限したり、アラートを Functions に流して自動で停止・スケールダウンする処理を自前で組みます。 また、コストデータは反映に時間差があるため、予算アラートは「即時の支出ブロック」ではなく「早期警告」として設計します。
設計パターン / ベストプラクティス
- コンパートメント設計をコスト配賦の単位に合わせる: チーム・プロジェクト・環境(本番/検証)でコンパートメントを切ると、Cost Analysis のグルーピングと予算対象がそのまま組織構造に対応する
- コスト追跡タグを早期に標準化:
CostCenter・Project・Environmentなどの定義済みタグをコスト追跡対象にし、タグ付け規約を IaC(Terraform 等)で強制する。後付けは遡れないため初期が肝心 - 段階的なアラートルール: 同じ予算に 50 / 80 / 100 パーセントなど複数のしきい値を設定し、早期は担当者、超過時はマネージャへとエスカレーションする
- 予測ベースのアラートを併用: 実績だけでなく予測ベースのルールも入れておくと、月の前半で急増した場合に着地超過を早く検知できる
- 重要度別に通知先を分離: 情報共有用と緊急用で Notifications トピックを分け、通知疲れを防ぐ
- 自動アクションは Functions で: 検証環境の夜間停止や上限超過時のスケールダウンは、予算アラートを Functions に流して自動化する
- 強制力が要る箇所は Quota で: 「これ以上作らせない」はアラートではなく Compartment Quota で実装する
運用・監視
- アラートが鳴らない: アラートルールの基準(実績か予測か)、しきい値(金額か割合か)、通知先(トピックまたはメール)の設定を確認する。メール宛先は確認(Confirm)が済んでいるか点検
- タグ別コストが想定と合わない: コスト追跡属性が付いた定義済みタグを使っているか、リソースに実際にタグが付与されているか、タグ付け前の期間ではないかを確認
- 数字がリアルタイムでない: コストデータには反映遅延があるのが正常。当日のごく直近の利用は反映途中のことがある
- 明細を深掘りしたい: Cost Analysis の集計で足りない粒度は **Usage Report(CSV)**を取得し、BI/DB で分析する
- 複数チームへの配賦: コンパートメントとコスト追跡タグの両軸で集計し、ショーバック(見える化のみ)かチャージバック(実費請求)かに応じてレポートを設計する
- 権限不足: コストや予算が見えない場合は、後述の IAM ポリシー(
usage-budgetsや使用量参照の権限)を確認する
コスト
Cost Analysis・Budgets・Usage Report といったコスト管理機能そのものは、基本的に追加料金なしで利用できるのが一般的です。課金されるのは分析対象であるクラウドリソースの利用料であり、可視化や予算アラートの利用に対して別途費用は発生しないのが通例です。
ただし、Usage Report の CSV を出力する Object Storage の保管料や、アラートを配信する Notifications の配信分など、周辺サービス側でわずかな費用が生じる場合があります。コスト管理機能の価値は、これらを使って本体のリソース費用を最適化することにあります。
| 項目 | OCI Cost Analysis / Budgets | AWS Cost Explorer / Budgets |
|---|---|---|
| 可視化・分析 | Cost Analysis(コンソールで集計・グラフ化) | Cost Explorer |
| 予算とアラート | Budgets(コンパートメント/タグ単位) | AWS Budgets |
| 詳細明細の出力 | Usage Report(CSV を Object Storage へ) | Cost and Usage Report(CUR)を S3 へ |
| コスト配賦のキー | コンパートメント+コスト追跡タグ | アカウント+コスト配分タグ |
| 機能自体の料金 | 基本的に追加料金なし | 基本機能は無償、一部 API 等は有償 |
セキュリティ
- IAM ポリシーで参照と管理を分離: コストの閲覧(使用量・コストの read)と予算の作成・変更(
manage budgets相当)を別グループに割り当て、最小権限にする - テナンシ全体のコストは強い権限: テナンシ全体のコストや使用状況の参照は機微情報になり得るため、ファイナンス担当など限定したグループにのみ付与する
- Usage Report バケットの保護: 明細 CSV が出力されるバケットは、配賦に必要な人だけが読めるようにアクセスを絞る
- 通知経路の保護: 予算アラートの宛先 Notifications トピックは、HTTPS なら TLS と受信側認証、メールなら確認済みアドレスのみを使う
- タグの整合性: コスト追跡タグはタグ名前空間(Tag Namespace)で一元管理し、自由記述タグの乱立で配賦が壊れないようガバナンスを効かせる
「コストがいくらか」は Cost Analysis / Budgets、「リソースをこれ以上作らせない」は Compartment Quota、「誰がいつ何を操作したか」は OCI Audit。 コスト管理は可視化と警告、強制は Quota、操作証跡は Audit、と役割を分けて設計します。
Well-Architected の観点
- コスト最適化(Cost Optimization)が主役: Cost Analysis で支出を継続的に可視化し、未使用・過剰なリソースを定期的に洗い出して右サイズ化・停止する
- 予算による予防統制: プロジェクト開始時に予算とアラートを必ずセットし、コスト超過を事故ではなく仕組みで検知する文化にする
- 配賦による責任分界: コンパートメントとコスト追跡タグで「誰のコストか」を明確にし、各チームが自分の支出に責任を持つ(ショーバック/チャージバック)
- 運用との連携: 予算アラートを Notifications・Functions と組み合わせ、検知から是正までを自動化して運用負荷を下げる
試験で問われるポイント
- 予算(Budget)の対象はコンパートメント単位またはタグ単位であり、両方同時ではない
- アラートルールは実績(actual)支出と予測(forecasted)支出のどちらを基準にもできる
- 予算アラートは通知のみで、リソースを自動停止しない。強制的に作成を止めたいなら Compartment Quota を使う
- タグ別コスト配賦にはコスト追跡(Cost-Tracking)属性を付けた定義済みタグが必要。タグ付け前のコストは遡って分類されない
- 詳細な明細が必要なら **Usage Report(CSV を Object Storage に出力)**を使う
- AWS では Cost Explorer = Cost Analysis、AWS Budgets = Budgets、CUR = Usage Report に対応する
- Cost Analysis / Budgets の機能自体は基本的に追加料金がかからない
関連サービス・比較
OCI のコスト管理は、可視化(Cost Analysis)、予算とアラート(Budgets)、明細出力(Usage Report)、そして強制統制(Quota)が役割分担しています。AWS の対応サービスと並べると理解しやすくなります。
| 観点 | OCI | AWS |
|---|---|---|
| コストの可視化・分析 | Cost Analysis | Cost Explorer |
| 予算としきい値アラート | Budgets(コンパートメント/タグ) | AWS Budgets |
| 詳細明細データ | Usage Report(CSV/FOCUS) | Cost and Usage Report(CUR) |
| コスト配賦のタグ | コスト追跡タグ | コスト配分タグ |
| アラート通知の配信 | Notifications(ONS)トピック | Amazon SNS トピック |
| リソース作成の上限統制 | Compartment Quota | Service Quotas/SCP |
| 操作の監査証跡 | OCI Audit | AWS CloudTrail |
ハンズオン / CLI例
# 1) コンパートメントを対象に月次予算を作成
# amount は通貨単位、reset-period は月次サイクルを指定
oci budgets budget create \
--compartment-id "$TENANCY_OCID" \
--target-type "COMPARTMENT" \
--targets "[\"$COMPARTMENT_OCID\"]" \
--amount 1000 \
--reset-period "MONTHLY" \
--display-name "team-a-monthly-budget"
# 2) 実績支出が 80% に達したらメールで通知するアラートルールを追加
# type は ACTUAL(実績)か FORECAST(予測)、threshold-type は割合か金額
oci budgets alert-rule create \
--budget-id "$BUDGET_OCID" \
--type "ACTUAL" \
--threshold 80 \
--threshold-type "PERCENTAGE" \
--recipients "finance@example.com" \
--display-name "alert-80pct-actual"
# 3) 予測支出が 100% を超える見込みになったら鳴らす予測ベースのルール
oci budgets alert-rule create \
--budget-id "$BUDGET_OCID" \
--type "FORECAST" \
--threshold 100 \
--threshold-type "PERCENTAGE" \
--recipients "finance@example.com" \
--display-name "alert-forecast-overrun"
# 4) 作成済みの予算とアラートルールを一覧で確認
oci budgets budget list --compartment-id "$TENANCY_OCID"
oci budgets alert-rule list --budget-id "$BUDGET_OCID"
# 5) 詳細明細(Usage Report)の取得は専用バケットを参照する
# レポートは Oracle 側テナンシのバケットに出力されるため namespace を指定して読む
oci os object list \
--namespace "bling" \
--bucket-name "$TENANCY_OCID"
OCI Service
OCI Cost Analysis / Budgetsを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
管理・ガバナンス
比較で見る軸
クラウド: OCI / カテゴリ: 管理・ガバナンス / 難易度: basic
導入後に効く点
予算を作成し、実績や予測がしきい値を超えると通知で警告する。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- OCI
- カテゴリ
- 管理・ガバナンス
- 難易度
- basic
- 関連資格
- —
- 設計柱
- cost
判断チェックリスト
- 自社の用途が「管理・ガバナンス / cost」に近いか確認する。
- 強みである「コストを期間・サービス・タグ単位で可視化し傾向を分析する。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。