Skip to content

Collect, normalize, and aggregate fleet metrics - #380

Closed
dennis-upbound wants to merge 1 commit into
modelplaneai:mainfrom
dennis-upbound:dennis/metrics-impl
Closed

Collect, normalize, and aggregate fleet metrics#380
dennis-upbound wants to merge 1 commit into
modelplaneai:mainfrom
dennis-upbound:dennis/metrics-impl

Conversation

@dennis-upbound

Copy link
Copy Markdown
Collaborator

Implements the metrics design (#363, addressing #269): collect on every cluster, normalize to modelplane_*, and aggregate to one control-plane view through an OpenTelemetry collector.

Draft, built up in commits. This first commit adds the MetricMapping kind — the first-class, cluster-scoped resource that carries an engine's metric rename and label rules, which the collector reads to normalize onto modelplane_*. It follows the InferenceClass config-kind pattern: an XRD plus a mark-ready composition function (no composed children).

Still to come on this branch:

  • Built-in MetricMappings for vLLM, SGLang, and Triton/TensorRT-LLM.
  • compose-serving-stack: the per-cluster OTel collector — scrape the modelplane.ai/serving selector plus the EPP and substrate, transform-rename via the MetricMappings, push outbound.
  • The control-plane aggregation collector (stateless in-memory roll-up).
  • Name the engine /metrics port http in native.py, llmd.py, routing.py.

Adding a kind requires nix run .#build to regenerate the models; CI runs it.

The metrics design normalizes each engine's Prometheus metrics onto a
modelplane_* surface, selected per engine by a first-class resource rather than
a hand-edited ConfigMap. Add that resource: a cluster-scoped MetricMapping XRD
carrying a pod selector, a rename map, and label rewrites, plus a mark-ready
composition function, following the InferenceClass config-kind pattern. The
collector that reads these and the built-in per-engine mappings follow in later
commits.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Dennis Ramdass <dennis@upbound.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant