Skip to main content
idle · gcp

Global forwarding rules charging their hourly fee with no traffic

resource types
1
rule IDs covered
1
severity
medium

What does ZopNight detect here?

Every global forwarding rule carries a fixed hourly fee whether traffic flows or not. ZopNight reads up to 9 traffic axes (requests, ingress and egress bytes, new and open connections) and reports the full fee as recoverable only when every harvested axis stays under a 0.05 floor for 30 days.

Signal and threshold

How ZopNight evaluates Global forwarding rules charging their hourly fee with no traffic.
Field Value
Rule IDsRC-1255
Categoryidle
Severitymedium
Metricnone — pure configuration read
Sourcegke_idle_lb.go (GCPGlobalIdleLBRule, embeds GKEIdleLBRule)

A fee that ignores traffic

GCP bills each forwarding rule a fixed hourly fee, about $0.025/hour or roughly $18 a month, from creation until deletion, before any per-GB data charges. A global forwarding rule left behind after a migration keeps that meter running against nothing. The idle verdict recovers the full fee: the optimized cost of an unused forwarding rule is $0, because unlike a compute resource there is no smaller size to move it to.

Nine axes, every one must be quiet

Load balancers express traffic in different vocabularies depending on their type: HTTPS request counts, external and internal ingress/egress bytes for passthrough LBs, and new connections, open connections, and proxied bytes for TCP/SSL proxies. The rule declares all 9 series and reads each one by name for the resource. A download-heavy passthrough LB can show near-zero ingress while egress is enormous, and a long-lived-connection proxy shows no new connections while very much alive. Idle means every axis that was actually harvested sits below the 0.05 floor. If no axis was harvested at all, the rule abstains instead of firing on absence.

Peaks veto, not just averages

The floor is applied to both the average and the maximum of each full series, so a single real burst inside an otherwise calm month blocks the delete. A measured span shorter than 30 days also blocks it: a rule observed for a week might be newly provisioned and simply not wired up yet, which is not the same thing as abandoned.

Find candidate forwarding rules

Terminal window
gcloud compute forwarding-rules list --global \
--format="table(name,IPAddress,target,creationTimestamp)"

Cross-check any candidate against its Cloud Monitoring request graph, then delete the forwarding rule and its backend configuration together. The fee belongs to the rule, but orphaned backends invite reuse confusion.

What blocks the recommendation

Unknown or zero pricing, any axis at or above the floor on average or peak, a measurable history shorter than 30 days, or no harvested traffic series at all. There is no fallback to backend counts or tags; the provider-authoritative monitoring data, read through monitoring.timeSeries.list in roles/monitoring.viewer, is the only accepted evidence.

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·