Azure waste

Non-production AI Search service paying for SLA replicas

A non-production AI Search service running more than one replica, which buys an availability guarantee a development or test service does not need.
The agent reports this
Reversible
Saving holds until someone undoes it
Why it happens

An AI Search service bills a fixed hourly rate per search unit, and a unit is replicas multiplied by partitions, so each extra replica multiplies the bill by the partition count. Microsoft states that two or more replicas satisfy the query availability agreement and three or more satisfy the read-write one, and that partitions do not affect it at all, so every replica past the first is capacity bought for a guarantee a development or test service will never claim. The saving is the replicas above one multiplied by the partitions and by the unit rate, which is exactly what setting the replica count to one returns and nothing more. Partitions are deliberately left alone, because each holds a slice of the index and removing one is a decision about data rather than about capacity. Microsoft documents that the replica count can be changed at any time, so this is a setting rather than a migration and it can be set straight back. This rule requires the service to be answering queries: a service with no queries at all is the subject of idle_search_service, which recommends scaling to the floor, and reporting both against one service would count the same replicas twice. A service whose query metric is missing is skipped rather than assumed busy, because unmeasured is not the same as in use.

Azure Resource Graph holds ARM properties, not metrics, and this check decides on an Azure Monitor metric measured over a window: it fires only where the query rate is ABOVE zero, which is what keeps it from reporting the same replicas as idle_search_service. A Resource Graph query could list every non-production service with more than one replica, and that list would include the idle ones this rule deliberately leaves to the other check, so it would look like the answer and would not be it. Switch the check on to see the real finding.

Applies to microsoft.search/searchservices
What the agent does about it

A non-production AI Search service running more than one replica, which buys an availability guarantee a development or test service does not need.

It will not fix this one

It reports this and takes no action. A check only earns the right to change something once the action behind it can re-read live state before it fires and knows the way back.