Skip to main content
idle · azure

Azure AI Search services on dedicated capacity that answered zero queries

resource types
1
rule IDs covered
1
severity
medium

What does ZopNight detect here?

ZopNight flags an Azure AI Search service whose `SearchQueriesPerSecond` metric reads exactly zero on both average and peak, with at least 7 days of data and a known monthly cost. On the Dedicated pricing model a search service bills every hour for its replicas and partitions, and Microsoft states that only deleting the service stops billing entirely.

Signal and threshold

How ZopNight evaluates Azure AI Search services on dedicated capacity that answered zero queries.
Field Value
Rule IDsRC-1398
Categoryidle
Severitymedium
MetricSearchQueriesPerSecond
Thresholdaverage and maximum = 0
Evaluation window30d
SourceZopNight
Permissions usedMicrosoft.Search/searchServices/read · Microsoft.Insights/Metrics/Read

Search units bill whether or not anyone searches

On the Dedicated pricing model, an Azure AI Search service is provisioned capacity: you pay the tier’s prorated hourly rate for every replica and partition combination, known as search units, from the moment it exists. That base charge does not depend on traffic, so a service that nobody queries pays the same hourly rate as a busy one of the same size.

Microsoft is direct about the way out: to stop billing entirely on Dedicated you must delete the service, and deletion also removes its data.

Checking query traffic on a search service

Terminal window
az search service list --resource-group my-rg \
--query "[].{name:name, sku:sku.name, replicas:replicaCount, partitions:partitionCount}" -o table
az monitor metrics list --resource <search-service-resource-id> \
--metric SearchQueriesPerSecond --offset 30d --interval PT24H --aggregation Average Maximum

Every daily average and maximum at zero means no queries reached the service in that period.

The four conditions behind the finding

  1. The SearchQueriesPerSecond series exists for the service.
  2. Its average is exactly 0 and its maximum is exactly 0. Any query at all ends the check.
  3. The series covers at least 7 days, so a service created last week and still being wired up is not told to delete itself.
  4. The service has a known monthly cost above zero.

Unit count does not matter here: a single-replica, single-partition service qualifies just as a large one does.

Cases that do not count as idle

A missing metric is not treated as zero. If Azure Monitor has no query series for the service, there is no finding. Low but non-zero traffic is also out of scope; a service with more than one search unit and very little traffic is handled by Azure AI Search Over-Provisioned, which suggests fewer units rather than deletion.

Saving equals the whole service cost

Terminal window
saving = current monthly cost of the search service
cost after fix = 0

The cost is the tier’s hourly rate multiplied by the number of search units. Deleting the service recovers all of it.

Retiring an unused search service

  1. Search application code, configuration and indexers for the service endpoint to confirm nothing calls it.
  2. Export the index definitions, and the source data location, needed to rebuild it later.
  3. Delete it: az search service delete --resource-group my-rg --name my-search.
  4. If you need search again for occasional or bursty use, consider the Serverless model (in preview), which Microsoft suggests can cost less than a continuously provisioned Basic or S1 service.

See it fire on your bill.

Connect an account read-only. The first findings land in minutes.

472 rule families across 353 resource types on 22 platforms. Every threshold, metric, and IAM action is documented on these pages before you grant anything.

472 rule families documented
353 resource types covered
read-only default access level
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·