Runcost

Cloud cost anomaly detection: what native tools miss, and what works

Cloud cost anomaly detection is the practice of noticing a departure from expected spend as it starts, attributing it to the service and the team that caused it, and getting it to someone who can act before the invoice arrives. Every provider offers a native detector for its own bill. What none of them do is see across clouds, learn a baseline per business owner rather than per account, or route the alert to the budget holder with the context to explain it. That is the difference between a detector that saves the month and one that adds noise.

What an anomaly is, and what it is not

An anomaly is spend that departs from what the history and the plan said to expect: a service that doubled overnight, a new region that appeared, a data transfer line that was zero last week, a commitment that expired and turned into on-demand. It is defined against a baseline, so the same dollar amount can be an anomaly for one service and noise for another. A $500 jump is a crisis for a $600-a-month service and invisible on a $500,000 one.

It is not planned growth. A migration, a launch or a marketing campaign raises spend on purpose, and a detector that alerts on it every day teaches its readers to ignore it. The forecasting overlay, where budget owners record what is coming, is the same information a detector needs to stay quiet when the increase was expected. Anomaly detection and forecasting are one practice looked at from two ends.

Flexera’s 2026 State of the Cloud report puts wasted cloud spend at 29% of the bill, the first rise in five years. Not all of that starts as an anomaly, but much of it does: the environment left running, the job that never stopped, the log level nobody turned back down. Caught on the day it started, each of those is a small fix. Found on the invoice, it is a month of waste and an argument about whose it was.

What the native detectors do

Each provider detects anomalies in its own bill, scoped by its own containers. None sees the others.
ProviderToolWhat it watchesWhere it stops
AWSCost Anomaly DetectionSpend by service, linked account, cost category or cost allocation tag, against a machine-learned baseline, with alerts by email or SNS above a threshold.AWS only. Scoped by AWS containers, not business owners; alerts land in a mailbox or a topic rather than with the budget holder; sees cost data after the billing pipeline’s own delay.
AzureCost Management anomaly alertsDaily evaluation of subscription spend against recent history, with anomaly alert rules that email a list of recipients.Azure only. Subscription scope, so a shared subscription raises one alert for everyone; no attribution to the team or product inside it.
Google CloudBilling budgets and cost anomaly detectionBudget alerts per project or service at percentage thresholds, and anomaly detection on the billing account.Google Cloud only. Project and billing-account scope; thresholds are against a budget you set, not a baseline it learned per owner.

The native tools are worth turning on. They are free, they run inside the account, and they catch the large single-provider spike. What they cannot do is the part that makes an alert actionable in an organization with three bills and thirty budget owners: learn what normal looks like for each owner, say whose spend moved, and put the alert in front of that person with the resources behind it.

Baselines per service and per owner

A single threshold for the whole estate is either too loose to catch anything below the largest service or too tight to stay quiet on it. A baseline has to exist at the level where spend is stable and owned: per service, per environment and per owner. A team’s development environment has a rhythm; its production database has another; the shared cluster has a third that moves with all of its tenants.

The baseline also has to know the calendar. Month-end batch, weekday and weekend patterns, quarter-end reporting and known seasonal peaks are not anomalies, and a detector that flags every Monday has a short life. This is the same seasonality a forecast learns, from the same allocated history, which is why the two are best built on one ledger.

Attribution turns a spike into a task

An alert that says “EC2 spend is up 40% in account 1234” is a research project. An alert that says “the data platform team’s spend on compute in the analytics account is up $2,100 a day since Tuesday, driven by twelve new instances tagged pipeline-v2” is a task, and the person who receives it can close it in a message. The difference is allocation: the same mapping of accounts, subscriptions, projects and tags to owners that produces the monthly statement produces the attribution on the day.

Attribution also decides who is asked. The team that provisioned the instances knows whether they are supposed to be there. The budget owner knows whether the cost was planned. Finance needs neither the alert nor the resource list, only the summary at month-end and the confirmation that the anomaly was closed or accepted.

Routing: the alert goes to whoever can explain it

  • To the owning team, in the channel they already read: email, Microsoft Teams or Slack, with the resources, the delta and a link to the drill-down. A mailbox nobody owns is where alerts go to be ignored.
  • To the budget owner when the anomaly is material against their budget, not for every blip. Materiality is a percentage of their own spend, not of the company’s.
  • To FinOps as a digest, so patterns across teams are visible: the same misconfiguration in three places is a platform fix, not three tickets.
  • To finance as a monthly summary of anomalies raised, closed, accepted and their cost, which is also the evidence the practice is working.
  • Never to everyone. An alert with forty recipients has none.

Thresholds and noise

Two thresholds together keep a detector useful: a relative one, so a service is compared to its own baseline, and an absolute floor, so a 300% rise on a $20 service does not page anyone. Both are set per owner and tuned from the record of which alerts were acted on. Planned changes recorded in the forecast suppress the alert for their duration. Small anomalies go into a daily or weekly digest rather than an immediate message, and only the material ones interrupt.

The measure of a detector is not how many anomalies it finds. It is how many of its alerts led to an action, and how many real anomalies it missed that were found at month-end instead. Track both, and tune toward the first.

An anomaly runbook

  1. Detect: the baseline per service and owner flags a departure the day the cost data arrives.
  2. Attribute: the allocation names the owner, the resources and the rule, and estimates the daily run-rate of the change.
  3. Notify: the owning team gets the alert with the drill-down; the budget owner is included when the amount is material to them.
  4. Triage: the team marks it planned, unplanned or unknown within a working day. Planned closes it and feeds the forecast; unknown escalates.
  5. Act: stop, resize, revert or accept, with the decision recorded against the anomaly.
  6. Record: the anomaly, its cost, its cause and its resolution go into the monthly summary and, where the cause was structural, into a platform fix.
  7. Feed back: accepted anomalies update the baseline and the forecast so the same change does not alert again.

Measuring the detector

  • Time to detect: days from the first anomalous cost to the alert. Bounded below by the provider’s billing latency, so the target is “as soon as the data lands”.
  • Time to acknowledge: hours from alert to a triage decision by the owning team.
  • Precision: the share of alerts that led to an action or a recorded acceptance, per owner.
  • Misses: anomalies found at month-end that the detector did not raise, and why.
  • Cost avoided: the run-rate of stopped anomalies multiplied by the days to month-end, the figure that pays for the practice.

How Runcost does early warning

Runcost learns a baseline per service and per owner from the same allocated ledger it reports and forecasts from, across AWS, Azure and Google Cloud. A departure is flagged the day the billing data arrives, attributed to the team and the resources that caused it, and routed to email, Microsoft Teams or Slack with the drill-down attached. Planned changes recorded in the forecast keep it quiet, materiality is judged against the owner’s own budget, and every anomaly is recorded with its cost and its resolution for the month-end summary.

Questions

What is cloud cost anomaly detection?

Cloud cost anomaly detection is the practice of spotting spend that departs from its expected baseline as soon as the billing data shows it, attributing the change to the service and the team that caused it, and alerting someone who can act before the invoice. It is defined per service and owner, because the same amount is an anomaly for one workload and noise for another.

How does AWS Cost Anomaly Detection work?

It monitors spend by service, linked account, cost category or cost allocation tag against a baseline it learns from history, and sends an alert by email or an SNS topic when a departure exceeds the threshold you set. It covers AWS only and is scoped by AWS containers, so attribution to a business team and routing to its budget owner happen outside it.

Why are cloud cost alerts late?

Provider billing data arrives with a delay, often a day or more, so no detector sees a cost the moment it is incurred. Beyond that, lateness comes from alerts that land in an unread mailbox, from a single estate-wide threshold that only fires on the largest services, and from the time it takes to work out whose spend moved when the alert carries no attribution.

How do you reduce false positives in cost anomaly alerts?

Learn a baseline per service and owner that knows the weekly and monthly calendar, pair a relative threshold with an absolute floor, suppress the changes budget owners have already recorded in the forecast, send small departures to a digest rather than an immediate message, and tune the thresholds from the record of which alerts were acted on.

Should cost anomaly alerts go to engineering or finance?

To the engineering team that owns the spend first, because they can act, with the budget owner included when the amount is material to their budget. Finance needs the monthly summary of anomalies raised, closed and accepted, not the alerts themselves.

Sources

  1. FinOps Foundation, FinOps Framework: Anomaly Management capability
  2. AWS, Detecting unusual spend with AWS Cost Anomaly Detection
  3. Microsoft Learn, Identify anomalies and unexpected changes in cost
  4. Google Cloud, Create, edit, or delete budgets and budget alerts
  5. Flexera, 2026 State of the Cloud report (press release)

About the author

Faisal Saleem

Founder of Runcost, a multi-cloud cost management platform built so that finance can allocate, forecast and explain the cloud bill like any other financial document. Writes the guides here from the allocation and chargeback work behind the product.

Read next

Want this done on your own bill?

Thirty minutes on how your organization allocates, forecasts and explains cloud spend today, and whether Runcost would change that.

Book a call to discuss