PHASE 03 // IMPLEMENT

recfo@implement:~/runbooks/s3-08
S3-08 · Quantify Business Value · Budgeting

Set Application-Level Budgets & Alerts

Why

Managers optimise when they own the target. Without team-level budgets, nobody feels responsible and overspend diffuses across the organisation. Cloud-native budget alerts provide early warning before the monthly report — a forecasted alert at 100% tells you the budget will be exceeded, giving time to act.

What

Set per-application and per-team budgets with cloud-native alerts at progressive thresholds (50%, 75%, 90% actual + 100% forecasted).

How

Create Budgets per Provider

AWS Budgets:

aws budgets create-budget \
  --account-id 123456789012 \
  --budget '{
    "BudgetName": "platform-engineering-monthly",
    "BudgetLimit": {"Amount": "210000", "Unit": "USD"},
    "TimeUnit": "MONTHLY",
    "BudgetType": "COST",
    "CostFilters": {
      "LinkedAccount": ["111111111111", "222222222222"]
    }
  }' \
  --notifications-with-subscribers '[
    {"Notification": {"NotificationType": "ACTUAL",
      "ComparisonOperator": "GREATER_THAN",
      "Threshold": 75}, "Subscribers": [
        {"SubscriptionType": "EMAIL", "Address": "finops@company.com"}]},
    {"Notification": {"NotificationType": "ACTUAL",
      "ComparisonOperator": "GREATER_THAN",
      "Threshold": 90}, "Subscribers": [
        {"SubscriptionType": "EMAIL", "Address": "eng-lead@company.com"}]},
    {"Notification": {"NotificationType": "FORECASTED",
      "ComparisonOperator": "GREATER_THAN",
      "Threshold": 100}, "Subscribers": [
        {"SubscriptionType": "EMAIL", "Address": "finance@company.com"}]}
  ]'

Azure Budgets:

az consumption budget create \
  --budget-name "platform-engineering-monthly" \
  --amount 210000 --category Cost --time-grain Monthly \
  --start-date 2026-07-01 --end-date 2027-06-30

Azure supports Action Groups that trigger Logic Apps or Azure Functions on threshold breach — useful for auto-scaling down dev/test environments or posting Slack notifications.

GCP Budgets:

gcloud billing budgets create \
  --billing-account=XXXXXX-XXXXXX-XXXXXX \
  --display-name="platform-engineering-monthly" \
  --budget-amount=210000 \
  --filter-projects="projects/platform-prod,projects/platform-staging" \
  --threshold-rule=percent=0.75 \
  --threshold-rule=percent=0.90 \
  --threshold-rule=percent=1.0,basis=forecasted-spend \
  --notifications-pubsub-topic="projects/finops/topics/budget-alerts"

GCP’s Pub/Sub trigger enables programmable responses — a Cloud Function can post to Slack, create a Jira ticket, or even disable billing on sandbox/dev projects.

Set Alert Thresholds

ThresholdTypeWho Gets ItWhy
50%ActualFinOpsMidpoint check
75%ActualFinOps + Eng LeadTime to investigate burn rate
90%ActualFinOps + Eng LeadLast chance before breach
100%ForecastedFinOps + FinanceProjected exceed — time to act

The forecasted alert at 100% is the most valuable. An actual alert at 100% tells you money is already spent. A forecasted alert gives you days of lead time.

Deliverable Checklist

  • Budgets created per application / team per provider
  • Alert thresholds configured (50%, 75%, 90% actual + 100% forecasted)
  • Alert routing confirmed (email, Slack, PagerDuty)
  • Budget amounts aligned with consolidated budget (S3-07)
  • Budgets embedded in workload provisioning pipeline (links to S2-02)