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
#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.
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.
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.
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.
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.
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.
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.
A Secret holding this sink’s credentials. Modelplane mounts each key as a file under /etc/modelplane/telemetry/config. All sinks share one environment, so where two Secrets have the same key, refer to the file.
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.
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.