Skip to main content
idle · gcp

GCP Vertex AI Feature Store Idle

resource types
1
rule IDs covered
1
severity
medium

What does ZopNight detect here?

Vertex AI Feature Stores are considered idle when online-serving CPU load sits below 1% over 30 days and any present request series carries zero traffic. Detection works today, but savings abstain fleet-wide: the provisioned node count has no per-node serving rate yet, so cost resolves to $0.

Signal and threshold

How ZopNight evaluates GCP Vertex AI Feature Store Idle.
Field Value
Rule IDsRC-1216
Categoryidle
Severitymedium
Metricnone — pure configuration read
Sourcevertex_idle.go

Near-zero CPU load anchors the idle call

  • MetricsAware: VertexFeaturestoreCPULoad (the idle anchor, required present) and VertexFeaturestoreRequestCount (optional veto) over 30 days the idle anchor is the continuous VertexFeaturestoreCPULoad gauge (present even at 0 QPS, harvested by the aggregator), required present via idleMetricGuard; the store is idle when its CPU load sits near-zero (< vertexFeaturestoreActiveCPUPercent, 1.0%). VertexFeaturestoreRequestCount is a delta counter that emits no series while the store is idle, so its absence is idle-consistent evidence rather than an abstain. The earlier revision required it present-and-zero, which a delta counter can never be, making the rule structurally dead. A request series that is present and carries real traffic vetoes the rec (low-but-real QPS on fixed nodes can show sub-1% CPU while still in active use, a rightsize case rather than a delete case). Mirrors the RC-192 Neptune pattern (continuous CPU gauge anchors the window; absent activity counter confirms idle). When present-and-zero, the request series is stamped as supporting zero-traffic evidence alongside the primary CPU-load evidence.

Why the missing node rate blocks a dollar figure

concrete-or-abstain. PRODUCER-GAP: the recoverable dollars are the fixed online-serving node-hours; the provisioned node count is discovered (fixedNodeCount) but is not yet multiplied by a per-node Vertex serving rate in pricing/gcp (Vertex serving is calcFree, so pricing[uid] is $0 on the calculated path). The concrete-or-abstain cost gate in idleMetricGuard therefore keeps this rule abstaining fleet-wide until that rate producer lands. Detection is now correct, but the dollar figure stays honest (never fabricated on a $0 cost).

Scaling serving nodes to zero

  1. Confirm no application reads online features from this store
  2. Scale online-serving node count to zero, or delete the Feature Store if unused

CPU load and request count over 30 days

VertexFeaturestoreCPULoad, VertexFeaturestoreRequestCount (30 day lookback each)

See it fire on your bill.

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

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

417 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·