Cost Anomalies

On the [Cost & Finance > Cost Anomalies] page — marked Beta — you can review days where spend departed from its usual pattern. CloudOps evaluates your costs once a day, keeps the result as an event, and explains which service drove the change.

⚠️
This page is monitoring-only — nothing is blocked, capped, or changed on your account. It reports what happened so you can decide what to do. History is kept for up to 30 days.

The header line reports when detection last ran and which day’s data it used, so you can tell at a glance whether what you are looking at is current.

Summary Cards

CardMeaning
DetectedAnomalies under the current filters
Estimated excess costTotal amount above the expected cost across those anomalies
Newly detectedAnomalies picked up by the most recent detection run, split into first-time and recurring
ℹ️
Newly detected counts by actual detection run, not by calendar date. If a run is delayed the figure still describes the latest run rather than silently reading as zero for the day.

Viewing

Search matches the target or the cause, so you can look up either an account you care about or a service you suspect.

ColumnDescription
Charge dateThe day the cost was actually incurred. Detection usually runs in the next day’s batch
DetectedThe day the detection batch flagged it — this can be a day or more after the charge date
TypeThe level the anomaly was found at — Customer, Organization, Account, App, Service, or CSP
TargetThe specific account, provider, service, or app
MetricWhat was measured — Cost, Usage, or Unit cost
Expected → ActualThe usual figure against what actually happened, with the ratio underneath
ImpactThe size of the gap in money — the table sorts by this by default
Main causeThe service that contributed most, with its share
SeverityCritical / High / Medium / Low
DurationHow long the anomaly has lasted
ℹ️
Charge date and Detected are deliberately separate columns. An anomaly on Monday’s spend is normally flagged by Tuesday’s run, so sorting by one does not give the same order as the other.

First and recurring detections

Every anomaly is marked as one of two kinds:

KindMeaning
First detectionThe same target was not anomalous the day before — this one is new
RecurringThe same target was already anomalous the day before — this one is carrying over

A problem that persists is re-detected rather than duplicated, so a long-running issue stays one thread instead of filling the list with a new row every day.

Related anomalies

One cause usually surfaces at several levels at once — a spike in a service is also visible in the account, organization, and application it belongs to. One row is marked Root and the rest are grouped under it as related anomalies you can expand.

ℹ️
Each related anomaly re-counts the same spike at a different level, so their amounts are not additive — adding them up would multiply one incident.

Filters

Filter opens a two-pane panel: categories on the left, their options on the right.

FilterNarrows by
Charge periodWhen the cost was incurred — all 30 days, or the last 3 / 7 / 14
Detection periodWhen detection flagged it — all time, or the last 3 / 7 / 14 days
First / recurringOnly new anomalies, or only ones carrying over
TypeCustomer, Organization, Account, App, Service, CSP
CSPCloud provider
SeverityHow severe the deviation was
SuppressionHide suppressed (default), Include suppressed, or Suppressed only
Min. impactHides anomalies whose money impact is below a floor

The ☆ next to a category pins it, keeping the filters you use often at hand. Min. impact is the quickest way to cut noise — small deviations on small spend are technically anomalies but rarely worth acting on.

ℹ️
⋮ > Set Display on the table changes rows per page, column visibility and order, and lets you pin up to 2 columns to the left so they stay visible while you scroll the wide table horizontally. The layout is kept in your browser.

Suppressed anomalies

A suppressed anomaly is left out of the list by default and carries a Suppressed badge saying why:

ReasonMeaning
Matched by a suppression ruleAn expected recurrence you have already described in the detection settings
Suppressed individuallyMuted on its own from the anomaly itself

Use Suppressed only to review what you have muted, or to pick something to un-suppress.

Detection Settings

[Detection settings] in the page header opens the screen where you decide what is watched and how sensitively. It is reachable only from here — there is no menu entry for it — and [Back to anomalies] returns you to the list.

ℹ️
Settings apply from the next detection run. Anomalies already detected stay as they are and are not re-evaluated against the new values.

Watched units

Five units can be turned on or off independently: Account, CSP, Service, Organization, and App.

ℹ️
The customer level is not listed here. These settings are themselves saved at the customer scope, so showing it as a watched unit would mix “what am I configuring” with “what am I watching” in the same list.
⚠️
A unit with watching off never sends alerts, even if recipients are assigned to it. Organization and App are also detected only where cost allocation is configured — without allocation their results stay empty even while they are switched on.

Verdict method

FieldWhat it does
Detection techniqueWhat anomalies are looked for with. Pick at least one — MAD (outside the normal range) and WoW (against the same weekday last week)
Combine ruleHow the two signals are merged. AND flags only when both fire (recommended); OR flags when either does (sensitive). Unused when only one technique is selected
Sensitivity kHow tight the normal range is. Lower flags more. Greater than 0, up to 10 — the default is 3.5
Baseline windowHow many recent days count as “usual”. Between 7 and 180 days — the default is 30
Minimum impactAnomalies whose amount change falls below this are ignored
ℹ️
MAD measures usual variability using the median rather than the mean, so past spikes do not drag the reference upward. WoW compares against the same weekday a week earlier, so weekly cycles are not mistaken for anomalies.

Try it on an example

Below the watched units, an example chart shows how the current settings would judge a fixed sample series — how many of its days would be flagged, and which. Changing the verdict settings updates the result immediately, so you can see the effect of a sensitivity change before saving it.

⚠️
The example uses fixed sample data — it is not your own cost. It is there to show how the settings behave, not to preview your results.

How detection works

The ? beside the settings opens a guide dialog explaining the verdict flow — establish the usual level, derive the normal range, check the signals, then combine and suppress noise — along with a glossary and a short FAQ covering the questions the settings usually raise (why something was not flagged, whether to pick AND or OR, how to choose sensitivity).

Saving

[Save] shows exactly which values are changing before it commits, and [Reset] reverts to the last saved values, discarding unsaved edits. The footer records who last modified the settings and when.

Alert Recipients

[Alert recipients] sits in the header of the Detection settings screen — not on the anomaly list — and sets who gets notified, per target type — so an account owner is not paged about every service-level blip. Recipients assigned at a higher level are inherited unless you assign someone at the level itself; leaving a level empty keeps the inheritance.

ℹ️
Recipients are saved per type the moment you assign them — there is no page-level save here, unlike the detection settings on the same screen. A type with detection switched off keeps its recipients but sends nothing, and so does a type with nobody assigned.
ℹ️
Organizations are deliberately excluded from this dialog. They have no owner model in CloudOps, so there is nobody to assign the alert to.

Anomaly Detail

Clicking a row opens the event. The title names the target and the date, and the line beneath gives the event id, the level it was detected at, and the measure.

Summary banner

A one-line verdict — whether cost rose or dropped and by what multiple — followed by a sentence naming the actual figures and the main driver.

Daily trend

The measured cost per day over the baseline window, drawn against the Normal range — the interval CloudOps treated as ordinary. Days that fell outside it are marked as flagged, so the anomaly reads as a departure rather than as a number.

Causes — contribution to increase

The top services ranked by how much of the change each accounts for, in both money and share. This is what the Main cause column summarises in a single line.

ℹ️
Some levels have no further breakdown axis, so no cause contribution can be shown. The screen says so and offers a link to the level where the breakdown does exist.

Detection evidence

ItemMeaning
MethodHow the anomaly was judged — MAD + WoW combined or First seen
ExpectedThe figure the model predicted
Normal rangeThe interval treated as ordinary
ActualWhat was really spent
Deviation ratioActual against expected, as a multiple
Deviation score / Anomaly scoreHow far outside the range it fell, in statistical terms
Baseline windowThe history the expectation was built from
Sensitivity k / Minimum impactThe settings as they were at detection time
ℹ️
Sensitivity and minimum impact are recorded as a snapshot of the moment the verdict was made. If you change the settings afterwards, this panel still shows what the anomaly was actually judged against.

Related anomalies

The same incident seen at other levels, each with its own expected → actual figures. The row marked Root is the one CloudOps treats as the origin.

Handling history

A timeline of the whole episode, not just the latest state — every detection round and every user action in order:

EntryMeaning
DetectedThe first round that flagged this target
Re-detectedA later round that flagged it again, labelled with which day of the episode it is
Detection feedbackSomeone marked it a True positive or False positive
ActionA state change, with the note left at the time

[Take action] records feedback and a note in one step. When an anomaly has related anomalies you can choose whether the same action lands on them too — left off, the feedback applies to this anomaly alone.

v1.7.0