Modelplane Modelplane docs

TelemetryDestination Custom Resource

Where the fleet’s metrics go. Modelplane runs no collectors until a TelemetryDestination exists, and creating one turns on collection on every inference cluster. Several can exist. Their sinks are concatenated into one collector configuration, so adding a backend is a new object rather than an edit to one somebody else owns. A sink’s name is the collector’s name for its exporter, so it has to be unique across destinations.

Concept guide: Monitor the Fleet →

#Metadata

API version
modelplane.ai/v1alpha1
Kind
TelemetryDestination
Scope
Cluster
Short names
td

#Spec

Where the fleet’s metrics go. Modelplane runs no collectors until a TelemetryDestination exists, and creating one turns on collection on every inference cluster. Several can exist. Their sinks are concatenated into one collector configuration, so adding a backend is a new object rather than an edit to one somebody else owns. A sink’s name is the collector’s name for its exporter, so it has to be unique across destinations.

# extensions optional object

Collector extensions, passed through as written. Use it to define an authenticator that a sink’s config references. An exporter needs a client authenticator - basicauth, oauth2client, sigv4auth, headers_setter. The oidc extension authenticates callers of a receiver, so it is not one of these.

# sinks required object[] 1–16 items
# auth optional object

Authentication Modelplane sets up for this sink, using a credential from secretRef. For another scheme, define an authenticator under spec.extensions and reference it from config. Set here, it wins: Modelplane applies it over an auth block in config, so a sink’s credential cannot be quietly unpicked.

# bearerTokenKey optional string ≤ 253 chars

The key in this sink’s Secret holding the bearer token. Modelplane mounts it as a file and points the authenticator at it, so a rotated token is picked up without restarting the collector.

# config optional object

The rest of the exporter’s configuration, passed through as written: TLS, retries, queueing, compression, headers. Modelplane sets one default, for the exporters that flatten a series into labels: prometheus and prometheus_remote_write get resource_to_telemetry_conversion, or they would receive every series stripped of the cluster, deployment, engine and role it belongs to. Setting it here overrides that.

# endpoint optional string ≤ 2048 chars

Where this sink writes. Leave it unset for an exporter that doesn’t take an endpoint, such as kafka or debug, and configure it in config instead. Set here, it wins: Modelplane applies it over config, so a sink cannot be quietly redirected by the configuration passed through beside it.

# name required string ≤ 63 chars

This sink’s name, unique within the destination. It names the collector’s exporter instance, the authenticator Modelplane composes for it, and the directory its credential mounts at, so renaming one restarts the collector.

pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

# secretRef optional object

A Secret holding this sink’s credentials. Modelplane mounts each key as a file under /etc/modelplane/telemetry// and sets it as an environment variable for ${env:KEY} references in config. All sinks share one environment, so where two Secrets have the same key, refer to the file.

# name required string ≤ 253 chars

Name of the Secret, in modelplane-system on the control plane. Modelplane copies it to every cluster running a collector, so it doesn’t have to exist on each of them already.

# type required string ≤ 63 chars

The collector exporter to send with, by the name OpenTelemetry gives it: otlphttp, otlp, prometheus_remote_write, kafka, and every other one the collector provides. Not an enum: the collector already refuses to start on a name it doesn’t have, so repeating the list here would only add a second place for it to go stale.

#Status

# conditions optional object[]