Monitor WEKA clusters in Kubernetes with Prometheus and Grafana
Deploy Prometheus and Grafana to monitor the health and performance of WEKA clusters in Kubernetes.
Use Prometheus and Grafana to monitor the health and performance of WEKA clusters deployed in Kubernetes, including metrics such as throughput, CPU utilization, IOPS, and API requests. Starting with version v1.7.0, the WEKA Operator exposes these metrics by default, allowing Prometheus to scrape them and Grafana to visualize them. No additional installation flags or service monitor configurations are required.
Related topic
WEKA Operator day-2 operations
Before you begin
A WEKA cluster is deployed in your Kubernetes environment using WEKA Operator v1.7.0 or a later version.
You have
helm
andkubectl
command-line tools installed and configured to interact with your Kubernetes cluster.(Optional) WEKA
storageClasses
are configured to provide persistent storage for Prometheus and Grafana.
Related information
WEKA Operator v1.7.0 release notes
Workflow
Step 1: Install Prometheus and Grafana
Step 2: Access Prometheus server
Step 3: Access Grafana landing page
Step 1: Install Prometheus and Grafana
Use Helm to install Prometheus and Grafana in your Kubernetes cluster.
Create separate namespaces for Prometheus and Grafana.
$ kubectl create ns prometheus && kubectl create ns grafana
Add and update the Helm repositories for Prometheus and Grafana.
# Add Helm repositories $ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts $ helm repo add grafana https://grafana.github.io/helm-charts # Update repositories $ helm repo update
Install Prometheus. To configure persistent storage, add the flag:
--set server.persistentVolume.storageClass=<your-storage-class>
.$ helm upgrade --install prometheus prometheus-community/prometheus \ --namespace prometheus # Example with the persistent storage flag $ helm upgrade --install prometheus prometheus-community/prometheus \ --namespace prometheus \ --set server.persistentVolume.storageClass=weka-sc
Sample output of Prometheus Helm installation
$ helm upgrade --install prometheus prometheus-community/prometheus --namespace prometheus --set server.persistentVolume.storageClass=storageclass-wekafs-dir-api
Release "prometheus" does not exist. Installing it now.
NAME: prometheus
LAST DEPLOYED: Mon Aug 25 15:19:18 2025
NAMESPACE: prometheus
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The Prometheus server can be accessed via port 80 on the following DNS name from within your cluster:
prometheus-server.prometheus.svc.cluster.local
Install Grafana. To configure persistent storage, add the flag:
--set persistence.enabled=true,persistence.storageClassName=<your-storage-class>
.
$ helm upgrade --install grafana grafana/grafana \
--namespace grafana
# Example with the persistent storage flag
$ helm upgrade --install grafana grafana/grafana \
--namespace grafana \
--set persistence.enabled=true,persistence.size=8Gi,persistence.storageClassName=weka-sc
Sample output of Grafana Helm installation
$ helm upgrade --install grafana grafana/grafana --namespace grafana --set persistence.enabled=true,persistence.size=8Gi,persistence.storageClassName=weka-sc
Release "grafana" does not exist. Installing it now.
NAME: grafana
LAST DEPLOYED: Mon Aug 25 15:07:33 2025
NAMESPACE: grafana
STATUS: deployed
REVISION: 1
Step 2: Access Prometheus server
After installation, access the Prometheus web UI to verify that it is scraping metrics from the WEKA Operator.
Port-forward to the Prometheus server to access its web UI from your local machine.
$ export POD_NAME=$(kubectl get pods --namespace prometheus -l "app.kubernetes.io/name=prometheus,app.kubernetes.io/instance=prometheus" -o jsonpath="{.items[0].metadata.name}") [cite: 1259] $ kubectl --namespace prometheus port-forward $POD_NAME 9090
In a web browser, navigate to
http://localhost:9090
.Verify that WEKA metrics are available.
In the query field, type
weka_
. All WEKA metrics follow this naming convention.

Step 3: Access Grafana landing page
Access the Grafana UI to configure the Prometheus data source and import the pre-built WEKA dashboard.
Retrieve the admin password for Grafana.
$ kubectl get secret --namespace grafana grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
Get the URL to access the Grafana UI.
$ export NODE_PORT=$(kubectl get --namespace grafana -o jsonpath="{.spec.ports[0].nodePort}" services grafana) $ export NODE_IP=$(kubectl get nodes --namespace grafana -o jsonpath="{.items[0].status.addresses[0].address}") $ echo http://$NODE_IP:$NODE_PORT
In a web browser, navigate to the Grafana URL and log in. Use the username
admin
and the password retrieved in the previous step.Add Prometheus as a data source in Grafana.
On Grafana, select Data sources.
Select prometheus.
In the Connection setting, add the URL
http://prometheus-server.prometheus.svc.cluster.local
.

Import the WEKA dashboard.
Navigate to the WEKA GitHub repository and copy the
weka-dashboard.json
content.On Grafana, select Dashboards.
Select WEKA.
Select New > Import.
Paste the
weka-dashboard.json
content to the import box, and select Load.Select Import.

Last updated