Receta: presupuestos y guardrails de FinOps
Los presupuestos y el análisis de gasto de FinOps son funciones de Business. Community conserva el seguimiento de costes por sesión y la exportación de datos. Los presupuestos guardados antes de 0.1 se pueden consultar y eliminar, y se aplican mientras el módulo FinOps esté activo; Community no puede crearlos ni modificarlos. Las evaluaciones y los entornos de prueba siguen en Community.
Objetivo: “los agentes de este equipo dejan de gastar a 500 $/mes” — declarado una vez, aplicado en vivo, con umbrales de alerta en el camino de subida.
La aplicación de presupuestos es una de las actuaciones que están operativas
en el binario por defecto: un presupuesto en modo enforcing al llegar a su tope
deniega el gasto sin aprovisionamiento adicional
(el catálogo de módulos lo marca como
v1 | v1).
Crear un presupuesto
Sección titulada «Crear un presupuesto»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" }'- El dinero está en micro-USD (
limit_micro_usd: 500000000= 500 $), de modo que no hay ambigüedad de coma flotante en el contrato. dimension+keyacotan el presupuesto. Las dimensiones acotables incluyenglobal,model,provider,agent,session,team,project,workspace,api_key,actor,service_tier,context_window,inference_geo,gatewayeidentity.actiones el modo de aplicación:
action |
En el tope |
|---|---|
alert (por defecto) |
solo showback — las alertas se disparan, no se deniega nada |
throttle |
el seam de actuación ralentiza el nuevo gasto |
block |
el seam de actuación deniega el nuevo gasto |
Presupuestar una sola identidad
Sección titulada «Presupuestar una sola identidad»dimension: "identity" acota sobre el external id de una identidad de roster
firme — la identidad de workload o de agente que registraron tus
fuentes de identidad:
{ "dimension": "identity", "key": "spiffe://corp/agent/billing-reconciler", "limit_micro_usd": 50000000, "period": "monthly", "action": "throttle" }La identidad se resuelve en la ingesta de coste a partir del binding de agente, la clave de API o el actor de la muestra — de modo que el presupuesto sigue a la identidad a través de las superficies, no a una sola clave de API.
Verlo funcionar
Sección titulada «Verlo funcionar»# 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"En el tope, la comprobación de un presupuesto en modo enforcing devuelve
allowed: false con la acción (throttle o block) y el presupuesto que se
disparó — la denegación nombra su motivo. Las alertas también viajan por el flujo
de notificaciones, de modo que un destino de
Slack o PagerDuty oye el cruce del 80 % antes de la denegación del 100 %.
En la consola, Budgets muestra el consumo frente a cada límite, con la proyección del ritmo de gasto.
Darle al gasto un denominador: los resultados (outcomes)
Sección titulada «Darle al gasto un denominador: los resultados (outcomes)»El coste-por-resultado es lo que convierte un presupuesto en una conversación de negocio. Reporta resultados (un ticket resuelto, un PR mergeado, un caso cerrado) y lee los paneles de valor:
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"El resumen de valor incluye el riesgo de cancelación — consumo sin resultados — que es el inverso honesto de una métrica de éxito.
- Se deniega cuando no se puede leer el libro mayor: si la admisión del
presupuesto no se puede establecer (FinOps no puede leer su libro mayor), el
proxy de inferencia rechaza la llamada con 503, la razón
budget store unreachable (deny-closed)yx-should-retry: false, en lugar de dejar pasar gasto sin medir. Entre los gates propios del motor, solo el lanzamiento de sesión conserva una postura configurable para este caso (OLIVARES_SESSION_BUDGET_AVAILABILITY). - La capacidad reservada (
reserved_micro_usd) cuenta hacia el límite, de modo que un presupuesto no puede esquivarse reservando por adelantado. cost_typedeliberadamente no es una dimensión de presupuesto — las líneas de fallback estimado viajan por la dimensión a la que pertenecen en lugar de formar un pool paralelo.