Azure ML Online Deployment Idle
What does ZopNight detect here?
Azure ML online deployments showing zero requests per minute, on both average and maximum, across at least 7 days of metric coverage are flagged for deletion, with the deployment's full monthly cost as savings. GPU and CPU utilization attach as corroborating evidence, and a missing metric series never triggers the recommendation.
Signal and threshold
| Field | Value |
|---|---|
| Rule IDs | RC-1397 |
| Category | idle |
| Severity | high |
| Metric | none — pure configuration read |
| Source | ml_online_deployment_idle.go |
Where it applies
Zero requests per minute, average and maximum
- RequestsPerMinute is the primary idle signal. Rule fires only when this series is present and both Average == 0 and Maximum == 0. Absent series (new deployment / no Azure Monitor data) → nil; never emits a delete recommendation without positive evidence of zero traffic.
- GpuUtilizationPercentage and CpuUtilizationPercentage are corroborating evidence. Both are declared in RequiredMetrics and attached to the recommendation as evidence when present; they are not gates.
- AvgCoverageDays() >= 7 (project-wide MinMaxCoverageDays), gated on the Average band because RequestsPerMinute is an Average-only Azure Monitor metric (MaxCoverageDays is structurally 0, so a Max gate would abstain unconditionally); prevents a brand-new deployment with a day or two of naturally zero traffic from triggering this high-severity delete recommendation.
- Billing cost > 0 is required before firing. The billing overlay for a managed online deployment lags ~24–72h. A $0-cost/$0-savings recommendation can’t be ranked, and the low-savings drop filter (shouldDropLowSavings) only drops Savings > 0 && < $5, so a $0 recommendation would otherwise slip through and persist as noise. Once the overlay lands, the next engine run surfaces the idle deployment with real savings.
Gates for a zero-traffic delete call
fires when all gates align: metric series present AND RequestsPerMinute.Average == 0 AND Maximum == 0 AND AvgCoverageDays() >= 7 AND cost > 0. Any traffic or absent series → no recommendation.Deleting refunds the deployment’s whole bill
PricingAware: SavingsUSD = CurrentCostUSD (full monthly cost saved if the deployment is deleted). Cost comes from the billing overlay (pricing[UID]).
Removing the deployment and its endpoint
- Confirm no application routes inference to this deployment
- In Azure ML studio (ml.azure.com) → Endpoints → the online endpoint → Deployments
- Delete the idle deployment, or set its instance count to 0
- Delete the parent endpoint too if it has no remaining deployments
Request rate plus GPU and CPU corroboration
RequestsPerMinute + GpuUtilizationPercentage + CpuUtilizationPercentage (30d lookback each)