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 and kubectl 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

Prometheus GitHub repository

Installing Grafana using Helm

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.

  1. Create separate namespaces for Prometheus and Grafana.

    $ kubectl create ns prometheus && kubectl create ns grafana
  2. 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
  3. 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
  1. 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.

  1. 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 
  2. In a web browser, navigate to

    http://localhost:9090.

  3. 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.

  1. Retrieve the admin password for Grafana.

    $ kubectl get secret --namespace grafana grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
  2. 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
  3. In a web browser, navigate to the Grafana URL and log in. Use the username

    admin and the password retrieved in the previous step.

  4. Add Prometheus as a data source in Grafana.

    1. On Grafana, select Data sources.

    2. Select prometheus.

    3. In the Connection setting, add the URL

      http://prometheus-server.prometheus.svc.cluster.local.

  1. Import the WEKA dashboard.

    1. Navigate to the WEKA GitHub repository and copy the weka-dashboard.json content.

    2. On Grafana, select Dashboards.

    3. Select WEKA.

    4. Select New > Import.

    5. Paste the weka-dashboard.json content to the import box, and select Load.

    6. Select Import.

Last updated