Skip to content

OpenCost allocations report zero usage against Coroot Prometheus #2689

Description

@devantler

🤖 Generated by the Daily AI Engineer

Reproduction and evidence

Read-only production verification on 2026-07-18 found the OpenCost release Ready with two healthy primary replicas, but its Coroot-backed metrics input is incomplete:

  • Coroot Prometheus returns 0 series for node_cpu_seconds_total, container_cpu_usage_seconds_total, and container_memory_working_set_bytes.
  • It does return kube-state data (kube_pod_container_resource_requests: 677 current samples; kube_node_status_capacity: 54).
  • OpenCost GET /allocation/compute?window=24h&aggregate=namespace returns HTTP 200 and 34 namespaces with non-zero requests/costs, but 0/34 namespaces have non-zero cpuCoreUsageAverage or ramByteUsageAverage.

The release being healthy therefore masks a functional degradation: allocation cost is derived from requested resources, while actual usage and efficiency are absent.

Audience and impact

Operators using OpenCost for utilization, idle-spend, or request-versus-usage decisions receive plausible-looking costs with zero actual CPU/RAM usage. This can misstate efficiency and makes the current OpenCost view unsafe as a usage-aware source of record.

The same latent design was about to be copied into the Platform template; platform-template#82 stopped that rollout after exact-head review prompted this live check.

Expected behavior

Choose and prove one coherent cost path:

  1. keep OpenCost and provide a Prometheus source with the standard node/cAdvisor/kube-state series its allocation model needs; or
  2. retire OpenCost and use the independently live-proven Coroot node/application cost rollups instead.

Do not treat Helm readiness or a successful allocation HTTP response as sufficient proof.

Acceptance criteria

  • Record the chosen OpenCost-versus-Coroot cost architecture and its trade-off.
  • If OpenCost stays, its Prometheus query surface contains the required standard usage series and a 24-hour allocation reports non-zero CPU/RAM usage for active namespaces.
  • If OpenCost retires, remove its release, route, policy, and related ownership cleanly, and update user-facing cost guidance to Coroot.
  • Add an executable or operational check that detects the current zero-usage false-green state.
  • Validate statically and verify the resulting cost view read-only in production before closing.

Rough size: M

Related: #1784, #2043, devantler-tech/platform-template#65

Metadata

Metadata

Assignees

Type

Projects

Status
✅ Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions