レシピ: 予算と FinOps ガードレール
目標: 「このチームのエージェントは月 $500 で支出を止める」——一度宣言すれば ライブで強制され、上昇途中のしきい値でアラートが出る。
予算の強制は、デフォルトバイナリでライブになっているアクチュエーションの
1 つだ: 上限に達した強制予算は、追加のプロビジョニングなしに支出を拒否する
(モジュールカタログはこれを v1 | v1 と
マークしている)。
予算を作成する
Section titled “予算を作成する”curl -ks -X POST "$BASE/v1/m/finops/budgets" \ -H "Authorization: Bearer $TOKEN" -H "X-Olivares-Tenant: $TENANT" \ -H 'Content-Type: application/json' \ -d '{ "dimension": "team", "key": "payments", "limit_micro_usd": 500000000, "period": "monthly", "thresholds": [0.5, 0.8, 1.0], "action": "block" }'- 金額はマイクロ USD だ(
limit_micro_usd: 500000000= $500)。これにより 契約上の浮動小数点の曖昧さがない。 dimension+keyが予算のスコープを定める。スコープ対象の dimension にはglobal、model、provider、agent、session、team、project、workspace、api_key、actor、service_tier、context_window、inference_geo、gateway、identityが含まれる。actionは強制モードだ:
action | 上限到達時 |
|---|---|
alert(デフォルト) | ショーバックのみ——アラートは発火するが、何も拒否されない |
throttle | アクチュエーションシームが新規支出を減速させる |
block | アクチュエーションシームが新規支出を拒否する |
単一のアイデンティティに予算を設定する
Section titled “単一のアイデンティティに予算を設定する”dimension: "identity" は、確かなロスターアイデンティティの external id に
スコープを定める——アイデンティティソース
が登録したワークロードまたはエージェントのアイデンティティだ:
{ "dimension": "identity", "key": "spiffe://corp/agent/billing-reconciler", "limit_micro_usd": 50000000, "period": "monthly", "action": "throttle" }アイデンティティは、コスト取り込み時にサンプルのエージェントバインディング、 API キー、または actor から解決される——そのため予算は、1 つの API キーではなく 複数の面にまたがってアイデンティティに追随する。
動作を確認する
Section titled “動作を確認する”# Live consumption vs limit, with run-rate projection:curl -ks "$BASE/v1/m/finops/budgets/$BUDGET_ID/status" \ -H "Authorization: Bearer $TOKEN" -H "X-Olivares-Tenant: $TENANT"
# Threshold crossings (your 50% / 80% / 100% alerts):curl -ks "$BASE/v1/m/finops/alerts" \ -H "Authorization: Bearer $TOKEN" -H "X-Olivares-Tenant: $TENANT"上限に達すると、強制予算のチェックは allowed: false を、アクション
(throttle または block)と発火した予算とともに返す——拒否はその理由を
名指しする。アラートは通知ストリームにも乗るため、Slack や PagerDuty の
デスティネーションが 100% の拒否より前に
80% の到達を知る。
コンソールでは、Cost & FinOps が dimension 別の支出を予算ステータスと インラインで表示する:
支出に分母を与える: アウトカム
Section titled “支出に分母を与える: アウトカム”コスト・パー・アウトカムこそが、予算をビジネスの会話にするものだ。アウトカム (解決したチケット、マージされた PR、クローズしたケース)を報告し、価値パネルを 読む:
curl -ks -X POST "$BASE/v1/m/finops/outcomes" \ -H "Authorization: Bearer $TOKEN" -H "X-Olivares-Tenant: $TENANT" \ -d '{"kind":"ticket.resolved","subject_ref":"agent:support-triage","count":1}'
curl -ks "$BASE/v1/m/finops/value" \ -H "Authorization: Bearer $TOKEN" -H "X-Olivares-Tenant: $TENANT"価値サマリーにはキャンセルリスク——アウトカムのないバーン——が含まれる。 これは成功指標の正直な逆数だ。
- 意図的なフェイルオープン: 予算チェック自体がエラーになった場合 (FinOps の読み取り失敗)、推論は無言でブロックされるのではなく許可される ——壊れたメーターが障害になってはならない。その失敗はログに記録され、 可視化される。
- 予約済みキャパシティ(
reserved_micro_usd)は上限に算入されるため、 事前予約によって予算を回避することはできない。 cost_typeは意図的に予算の dimension になっていない——見積もりフォール バックの行は、並行プールを形成するのではなく、本来属する dimension に乗る。