Skip to main content
Most of the dashboard works the moment it’s installed. Two things need connecting: your Prometheus (for the trend charts), and, on GPU clusters, GPU telemetry (for per-GPU detail): Everything is set through Helm values: Cluster access itself needs no configuration: the UI picks it up automatically when running in-cluster.

Trend Charts: Connect Your Prometheus

Live numbers come straight from the engines; history comes from your Prometheus. Two things must both be true: the UI can reach a Prometheus, and the engine’s metrics are arriving in it. 1. Point the UI at your Prometheus. Find its service with kubectl get svc -A | grep -i prometheus. The name varies by install:
2. Make sure the engine’s metrics reach that Prometheus. How they get there depends on your setup: Prometheus scraping the engine directly, or the engine pushing through an OTel Collector. Both paths (and how to verify which one you’re on) are covered in the operator’s Metrics page. The UI just reads what Prometheus already has.
Install the community kube-prometheus-stack. It includes the Prometheus Operator that makes ServiceMonitors work:
Then prometheus.url is http://kube-prometheus-stack-prometheus.monitoring.svc:9090, and the ServiceMonitor label above is release: kube-prometheus-stack.
Charts fill once both halves are in place; if they stay empty while everything else works, see Troubleshooting.

Per-GPU Detail: Connect GPU Telemetry (GPU clusters)

Per-GPU utilization, memory fill, and hardware-fault detail come from NVIDIA’s DCGM exporter, standard on GPU clusters (it ships with the NVIDIA GPU Operator), but not part of Tensormesh. Find your exporter’s service and point dcgmService at it (service.namespace:port):
If it’s unset or unreachable, the Fleet Map shows one row per node instead of per-GPU cards; everything else is unaffected. If your GPU cluster doesn’t have the exporter at all, it ships with the NVIDIA GPU Operator: install that per NVIDIA’s docs and the exporter service appears with it.

GPU trend charts need Prometheus to scrape DCGM

The live per-GPU cards fall back to dcgmService directly, but the over-time charts read history from Prometheus. Confirm DCGM is being scraped: query DCGM_FI_DEV_GPU_UTIL in Prometheus and expect series back. On some managed clusters the exporter ships a ServiceMonitor labelled for a different Prometheus (e.g. CoreWeave labels theirs environment: grafana-monitoring, while kube-prometheus-stack selects release: <your-release>), so it returns zero series and the GPU trend charts stay empty. Fix it by adding a ServiceMonitor for the DCGM exporter’s service with the label your Prometheus selects.

Multiple Clusters

One dashboard can watch several clusters: the fleet-wide pages merge every cluster’s engines (labeled · prod / · staging), and per-engine pages scope to the right one. The cluster the UI runs in is automatic. Each additional cluster needs just two things: its apiUrl and a read-only token. There are two steps: 1. Put your clusters (with tokens) in a Secret:
2. Point your values file at it:
Reinstall, and every cluster shows up. Each entry can also set its own namespace, prometheusUrl, or dcgmService, and "insecure": true if that cluster’s API uses a self-signed certificate.
Run this in that cluster: it creates a read-only service account (the same access the UI uses) and prints a token:

Sharing one token across clusters

To skip per-cluster tokens, list the clusters in your values file and put a single TMO_KUBE_TOKEN in the Secret; every cluster inherits it.