Skip to main content
rightsizing · aws

ALB Cross-Zone Load Balancing Cost

rule IDs covered
1
severity
low

What does ZopNight detect here?

Cross-zone load balancing on NLBs bills every gigabyte relayed between Availability Zones. ZopNight confirms cross_zone_enabled via DescribeLoadBalancerAttributes, but abstains from pricing savings today: Cost Explorer offers no per-load-balancer inter-AZ transfer figure, so no producer exists. After disabling, watch target health and p95 latency for 24 hours.

Signal and threshold

How ZopNight evaluates ALB Cross-Zone Load Balancing Cost.
Field Value
Rule IDsRC-1509
Categoryrightsizing
Severitylow
Metricnone — pure configuration read
Sourceelb_cross_zone.go

The cross-zone flag, and the missing cost signal

  • Metadata cross_zone_enabled (bool; ELBv2 DescribeLoadBalancerAttributes → load_balancing.cross_zone.enabled) is the applicability gate, fail-closed. The prior cross_zone Tag read was dead (the LB discoverer never wrote it).
  • Metadata inter_az_transfer_cost_usd (float, PRODUCER-GAP): the real billed inter-AZ data-transfer dollars attributable to this LB; the only defensible monetary basis.

Why the rule abstains until inter-AZ dollars exist

when the producer lands, CurrentCostUSD = SavingsUSD = inter_az_transfer_cost_usd (the entire billed inter-AZ line item the disable-cross-zone lever targets, from CE intra-region DataTransfer-Regional-Bytes per LB), OptimizedCostUSD → 0, mirroring RC-178. The prior cost × 0.30 and the $0 “performance” advisory are both removed. PRODUCER-GAP: inter_az_transfer_cost_usd has no producer (ProcessedBytes, as the load balancer publishes it, is total LB throughput, not the inter-AZ portion; data_transfer.go now harvests the cross-AZ DataTransfer-Regional-Bytes axis, but only as its own account-grain signal, cross_az_transfer_cost_usd, consumed by RC-065, and CE still has no per-ELB resource granularity for it), so the rule abstains once cross-zone is confirmed enabled, until a real per-LB inter-AZ-transfer cost producer exists. (The GCP twin RC-123 has the identical anti-pattern, separate pass.)

Turning cross-zone off without breaking AZ balance

  1. Confirm targets are evenly distributed across AZs (uneven distribution still needs cross-zone)
  2. NLB: Edit attributes → Cross-zone load balancing → Off (NLB bills per-GB for cross-zone traffic)
  3. ALB: cross-zone is on-by-default; review downstream cross-AZ EC2 data-transfer cost
  4. Monitor target health distribution and p95 latency for 24h after the change

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·