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
- A kubernetes cluster with Dragonfly installed
- Prometheus setup in the cluster. See Prometheus integration guide
- You have Helm installed.
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.
1. helm repo add grafana https://grafana.github.io/helm-charts
2. 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.
1. $ kubectl get all
2. NAME READY STATUS RESTARTS AGE
3. pod/dragonfly-sample-0 1/1 Running 1 (171m ago) 23h
4. pod/dragonfly-sample-1 1/1 Running 1 (171m ago) 23h
5. pod/grafana-ui-785f79fb65-rmk52 1/1 Running 1 (171m ago) 23h
6. pod/prometheus-operator-744c6bb8f9-vnxw4 1/1 Running 10 (170m ago) 8d
7. pod/prometheus-prometheus-0 2/2 Running 0 167m
9. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
10. service/dragonfly-sample ClusterIP 10.96.2.149 <none> 6379/TCP 23h
11. service/grafana-ui ClusterIP 10.96.146.235 <none> 80/TCP 23h
12. service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 33d
13. service/prometheus-operated ClusterIP None <none> 9090/TCP 167m
14. service/prometheus-operator ClusterIP None <none> 8080/TCP 8d
16. NAME READY UP-TO-DATE AVAILABLE AGE
17. deployment.apps/grafana-ui 1/1 1 1 23h
18. deployment.apps/prometheus-operator 1/1 1 1 8d
20. NAME DESIRED CURRENT READY AGE
21. replicaset.apps/grafana-ui-785f79fb65 1 1 1 23h
22. replicaset.apps/prometheus-operator-744c6bb8f9 1 1 1 8d
24. NAME READY AGE
25. statefulset.apps/dragonfly-sample 2/2 23h
26. 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.
1. kubectl apply -f https://github.com/dragonflydb/dragonfly-operator/blob/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.
1. 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.
