Zum Inhalt springen

Rezept: Budgets & FinOps-Guardrails

Ziel: „die Agenten dieses Teams hören bei 500 $/Monat auf zu geben“ — einmal deklariert, live durchgesetzt, mit Alert-Schwellenwerten auf dem Weg nach oben.

Die Budget-Durchsetzung ist eine der Aktuierungen, die im Standard-Binary live sind: ein durchsetzendes Budget an seinem Cap verweigert die Ausgabe ohne zusätzliche Provisionierung (der Modul-Katalog markiert es mit v1 | v1).

Terminal-Fenster
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"
}'
  • Geld ist in Mikro-USD (limit_micro_usd: 500000000 = 500 $), sodass es im Vertrag keine Float-Ambiguität gibt.
  • dimension + key scopen das Budget. Gescopte Dimensionen umfassen global, model, provider, agent, session, team, project, workspace, api_key, actor, service_tier, context_window, inference_geo, gateway und identity.
  • action ist der Durchsetzungsmodus:
actionAm Cap
alert (Standard)nur Showback — Alerts feuern, nichts wird verweigert
throttleder Aktuierungs-Seam bremst neue Ausgaben
blockder Aktuierungs-Seam verweigert neue Ausgaben

dimension: "identity" scopt auf die External ID einer festen Roster-Identität — die Workload- oder Agent-Identität, die Ihre Identitätsquellen registriert haben:

{ "dimension": "identity", "key": "spiffe://corp/agent/billing-reconciler",
"limit_micro_usd": 50000000, "period": "monthly", "action": "throttle" }

Die Identität wird beim Cost-Ingest aus der Agent-Bindung, dem API-Schlüssel oder dem Actor des Samples aufgelöst — sodass das Budget der Identität über Oberflächen hinweg folgt, nicht einem API-Schlüssel.

Terminal-Fenster
# 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"

Am Cap gibt der Check eines durchsetzenden Budgets allowed: false zurück, mit der Aktion (throttle oder block) und dem Budget, das gefeuert hat — die Verweigerung benennt ihren Grund. Alerts reiten auch auf dem Benachrichtigungs-Stream, sodass ein Slack- oder PagerDuty-Ziel die 80%-Überschreitung hört, bevor die 100%-Verweigerung erfolgt.

In der Konsole zeigt Cost & FinOps die Ausgaben nach Dimension mit dem Budget-Status inline:

Die Cost-&-FinOps-Ansicht mit Ausgabentrends und Budget-Posture. Die Cost-&-FinOps-Ansicht mit Ausgabentrends und Budget-Posture.

Cost-per-Outcome ist das, was aus einem Budget ein Business-Gespräch macht. Melden Sie Outcomes (ein gelöstes Ticket, ein gemergter PR, ein abgeschlossener Fall) und lesen Sie die Wert-Panels:

Terminal-Fenster
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"

Die Wert-Zusammenfassung enthält Cancellation Risk — Burn ohne Outcomes — was die ehrliche Umkehrung einer Erfolgsmetrik ist.

  • Bewusst Fail-open: Wenn der Budget-Check selbst Fehler wirft (ein FinOps-Lesefehler), wird die Inferenz erlaubt statt still blockiert — ein defekter Zähler darf nicht zum Ausfall werden. Der Fehler wird geloggt und ist sichtbar.
  • Reservierte Kapazität (reserved_micro_usd) zählt zum Limit, sodass ein Budget nicht durch Vorab-Buchung umgangen werden kann.
  • cost_type ist bewusst keine Budget-Dimension — Estimated-Fallback-Zeilen reiten auf der Dimension, zu der sie gehören, statt einen parallelen Pool zu bilden.