Skip to main content

Integrate Grafana with Dragonfly operator

In this guide, we are going to see how we can setup Grafana dashboard to monitor Dragonfly pods in kubernetes cluster.

Prerequisites

If you already have Grafana instance in your cluster, use grafana-dashboard.json to import the dashboard.

Install Grafana helm chart

We'll be using grafana helm chart to setup Grafana. So make sure you have Helm installed.

helm repo add grafana https://grafana.github.io/helm-charts
helm install grafana-ui grafana/grafana

Once you run the command, grafana will create all the necessary resources to setup grafana. Run the below command to check if all resources are created successfully.

$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/dragonfly-sample-0 1/1 Running 1 (171m ago) 23h
pod/dragonfly-sample-1 1/1 Running 1 (171m ago) 23h
pod/grafana-ui-785f79fb65-rmk52 1/1 Running 1 (171m ago) 23h
pod/prometheus-operator-744c6bb8f9-vnxw4 1/1 Running 10 (170m ago) 8d
pod/prometheus-prometheus-0 2/2 Running 0 167m

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/dragonfly-sample ClusterIP 10.96.2.149 <none> 6379/TCP 23h
service/grafana-ui ClusterIP 10.96.146.235 <none> 80/TCP 23h
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 33d
service/prometheus-operated ClusterIP None <none> 9090/TCP 167m
service/prometheus-operator ClusterIP None <none> 8080/TCP 8d

NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/grafana-ui 1/1 1 1 23h
deployment.apps/prometheus-operator 1/1 1 1 8d

NAME DESIRED CURRENT READY AGE
replicaset.apps/grafana-ui-785f79fb65 1 1 1 23h
replicaset.apps/prometheus-operator-744c6bb8f9 1 1 1 8d

NAME READY AGE
statefulset.apps/dragonfly-sample 2/2 23h
statefulset.apps/prometheus-prometheus 1/1 167m

Create Prometheus Service

Create a Prometheus Service to let Grafana access prometheus through it. If you already have a Prometheus Service object, move to the next step.

kubectl apply -f https://raw.githubusercontent.com/dragonflydb/dragonfly-operator/main/monitoring/prometheus-service.yaml

Note that it is required to use prometheus: prometheus label as selector (if no label is given to the existing Prometheus object). The prometheus operator exposes a port named web, so you can use this port as targetPort in the service.

Create Grafana dashboard

The helm chart also creates a grafana-ui service which you can use to port-forward the grafana port.

kubectl port-forward services/grafana-ui 3000:80

Now go to localhost:3000. You will see a grafana dashboard running in the localhost. add a Prometheus data source. Use http://prometheus-svc:9090 as the datasource url. After that, import grafana-dashboard.json to the dashboard.