Skip to content

Decide where fleet reachability and GPU-seconds are measured from #511

Description

@dennis-upbound

Three metrics in #476's per-object-state group cannot come from a workload cluster, and #510 takes the rest.

modelplane_cluster_connected is unreachable by construction: a collector running on a cluster you have lost cannot report that you have lost it. modelplane_replicas_desired is the user's intent, which exists only on the ModelDeployment. And the cost chain, modelplane_replica_allocated_time_seconds into modelplane_gpu_seconds_total, wants a vantage that survives the cluster going away, because that is when the billing question gets asked.

design/telemetry.md answers this with resource-state-metrics plus a control-plane collector. That is a sound answer to the measurement question and an expensive one to the operational question: it would be the first workload Modelplane installs on a control plane, and it brings a new XR or an install-guide component, with its own readiness, RBAC and upgrade story. TelemetryDestination is already cluster-scoped on the control plane and its function composes nothing, so it is the natural place to hang this if we do build it.

Two things to settle before anything is built.

A smaller first step exists. Shipping the ResourceMetricsMonitor definitions, and documenting that an operator scrapes them with the Prometheus they already run, gives the series without Modelplane owning an export path on the control plane.

And these three metrics are the fleet view rather than the cluster view, which is where the open source telemetry design and the Upbound Inference one divide. Worth agreeing which side of that line they fall on before either side builds them.

Activity

  1. dennis-upbound commented on Oct 8, 2026

    @dennis-upbound
    CollaboratorAuthor

    Proposing the split rather than leaving it open: state is open source, money is commercial.

    modelplane_cluster_connected and modelplane_replicas_desired are open source. They are the state of objects the open source API owns, and an operator running two clusters needs to know one is unreachable whether or not they pay for anything. A fleet that cannot answer "is this cluster still there" from its own API is incomplete on its own terms.

    modelplane_gpu_seconds_total, and modelplane_replica_allocated_time_seconds underneath it, is billing attribution. It answers what a tenant owes, which is the fleet view, and it wants a vantage that survives the cluster going away precisely because that is a billing edge case rather than an operational one. That belongs in Upbound Inference.

    If that holds, this issue shrinks to two metrics and the smaller first step in the description is enough for them: ship the ResourceMetricsMonitor definitions and let an operator scrape them with the Prometheus they already run. No control-plane collector, and no new component on the control plane.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions