# GCP Idle Global Load Balancer

> 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.

Source: https://zop.dev/integrations/gcp/recommendations/gcp-idle-global-load-balancer
Updated: 2026-08-19

---

## 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

```bash
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.
