Why this matters: this is the self-managed path: you're deploying Mavvrik's own appliance into your cluster via Helm, which scrapes Prometheus metrics directly rather than relying on a cloud provider's managed telemetry. Getting the Prometheus URL and script execution right here is what determines whether node and workload cost data starts flowing.
Before you start: you'll need kubectl and helm installed and configured with access to your cluster, and Prometheus already running in it.
Which clusters use this path: use this path for any self-managed Kubernetes cluster, including clusters that run on cloud virtual machines (for example, OpenShift on EC2). Managed services such as EKS, AKS and GKE have their own onboarding pages. The script in Step 3 installs the Mavvrik appliance as the Helm release dx-k8s-appliance in the mavvrik namespace.
Chart and provider: the appliance is a Helm chart published at oci://us-central1-docker.pkg.dev/cloudwiz-io/public-charts/dx-k8s-appliance. In its values, provider is set to "k8s"; leave it as "k8s" for every cluster that uses this page. Clusters onboarded this way appear on the K8s tab under Admin > Accounts > Kubernetes, with their host (for example on-prem or aws) shown in the Host Provider column. To install from the chart yourself and keep the API key in a Kubernetes Secret, see Kubernetes Secret Ref Usage.
Configuration steps
Step-1: Log in to Kubernetes Shell.
-
Ensure that kubectl and helm are installed and can access your cluster.
If Helm and kubectl are already installed, skip the steps below and proceed to Step-2.
Install kubectl
#Linux
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
#macOS
brew install kubectl
#Windows (PowerShell)
choco install kubernetes-cli
Install Helm
#Linux
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
#macOS
brew install helm
#Windows
choco install kubernetes-helm
Step-2: Enter the Prometheus URL in Mavvrik
-
Capture the Prometheus URL associated with the Kubernetes cluster:
a. Enter the following URL in Mavvrik UI
http://<prometheus-server-name>.<namespace>:<prometheus-internal-port>
b. To find the Prometheus service, run the following command in Kubernetes shell
kubectl get svc -n prometheus
-
In URL Replace
prometheus-server-name,namespace&prometheus-internal-portwith your data
Find & Enter the namespace where Prometheus service is installed
-
Following screenshot shows the example of URL
Step 3: Execute the script from the Kubernetes Shell
-
Copy the script and execute the command below provided by Mavvrik UI within the Kubernetes Shell terminal window.
-
Paste in Kubernetes Shell Editor and click Enter
-
Click on the Connect button in Mavvrik, after the running script is successfully completed.
-
The onboarded Kubernetes cluster will be displayed with the list of All linked Nodes.
Metrics collected
The appliance scrapes the following Prometheus metrics, one hour of data at a time. Your Prometheus must expose them for cost and utilization data to appear. Cost data is refreshed once every 24 hours.
Workloads
container_cpu_usage_seconds_total
container_memory_working_set_bytes
kube_pod_container_resource_requests
kube_pod_container_resource_limits
kube_pod_owner
kube_pod_labels
kube_pod_status_phase
Nodes
kube_node_info
kube_node_status_capacity
Storage and volumes
container_fs_reads_bytes_total
container_fs_writes_bytes_total
kube_persistentvolume_info
kube_persistentvolume_created
kube_persistentvolume_capacity_bytes
kube_persistentvolumeclaim_info
kube_persistentvolumeclaim_created
kube_persistentvolumeclaim_resource_requests_storage_bytes
kube_pod_spec_volumes_persistentvolumeclaims_info
kubelet_volume_stats_used_bytes
kubelet_volume_stats_capacity_bytes
GPU (collected only for NVIDIA GPU nodes that expose these metrics through the DCGM exporter)
DCGM_FI_DEV_GPU_UTIL
DCGM_FI_DEV_MEM_COPY_UTIL
DCGM_FI_DEV_FB_USED
DCGM_FI_DEV_FB_FREE
DCGM_FI_DEV_SM_CLOCK
DCGM_FI_DEV_GPU_TEMP
DCGM_FI_DEV_POWER_USAGE
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION
GPU monitoring (optional)
To see GPU utilization and cost for on-prem Kubernetes, your cluster needs:
-
NVIDIA GPUs on the nodes.
-
The NVIDIA DCGM exporter running in the cluster. The NVIDIA GPU Operator installs it, or you can deploy it separately.
-
Your Prometheus scraping the DCGM exporter. See the kube-prometheus-stack page for how to add a scrape target.
If the DCGM exporter is not running, GPU figures show no data. CPU, memory and storage are not affected.
The appliance reads these GPU metrics from Prometheus:
|
Metric |
What it measures |
How it is collected |
|---|---|---|
|
|
GPU utilization |
Average over each hour |
|
|
GPU memory copy (bandwidth) utilization |
Average over each hour |
|
|
GPU frame buffer (memory) in use |
Average over each hour |
|
|
GPU frame buffer (memory) free |
Average over each hour |
|
|
Streaming multiprocessor clock speed |
Average over each hour |
|
|
GPU temperature |
Average over each hour |
|
|
GPU power draw |
Average over each hour |
|
|
Total energy consumed by the GPU |
Highest value in each hour, and in each day |
GPU cost is calculated from the number of GPUs on a node and the node's GPU rate. See Configure Cluster/Node for how to set the GPU rate.
Troubleshooting
-
If the installation command fails, confirm that kubectl and Helm can access the intended cluster.
-
If the cluster does not connect, verify the Prometheus URL and rerun the command generated by Mavvrik.
-
If GPU figures show no data, confirm that the DCGM exporter is running and that Prometheus scrapes it.
FAQs
Do I need Prometheus already set up before starting this?
Yes, Prometheus needs to already be running in your cluster. This onboarding path scrapes metrics from your existing Prometheus, it doesn't install one for you.
How do I find the correct Prometheus URL if I don't already know it?
Run kubectl get svc -n prometheus in your Kubernetes shell to find the Prometheus service, then build the URL from the server name, namespace, and internal port shown in that output.