Grafana and Prometheus: My Power Duo for Multi-Cluster Monitoring!

Adityakale
3 min readJun 21, 2024

--

Overview

The goal of this project is to monitor multiple Kubernetes and Docker Swarm clusters using a centralized Prometheus and Grafana setup. The plan includes installing Prometheus on each cluster, configuring remote write and receive on the central Prometheus server, and setting up Grafana for visualization and alerts.

Steps

  1. Set up Central Prometheus and Grafana Server
  2. Install Prometheus on Each Cluster
  3. Configure Remote Write and Receive
  4. Set Up Grafana Dashboards and Alerts

Step 1: Set up Central Prometheus and Grafana Server

Install Prometheus on Central Server

  • Download and install Prometheus from the official website.
  • Configure Prometheus by editing the prometheus.yml file:
global:
scrape_interval: 15s

scrape_configs:
- job_name: 'central-prometheus'
static_configs:
- targets: ['localhost:9090']

remote_write:
- url: 'http://<central-prometheus-server>:9090/api/v1/write'
remote_read:
- url: 'http://<central-prometheus-server>:9090/api/v1/read'

Install Grafana on Central Server

  • Download and install Grafana from the official website.
  • Start the Grafana server and access it via http://<central-grafana-server>:3000.
  • Configure Grafana to use Prometheus as the data source:
  • Go to Configuration > Data Sources > Add data source > Prometheus
  • Set the URL to http://<central-prometheus-server>:9090

Step 2: Install Prometheus on Each Cluster

For Kubernetes Clusters

Install Prometheus using Helm:

  • Add the Helm repo:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update

Install Prometheus:

helm install prometheus prometheus-community/prometheus --namespace monitoring --create-namespace

Edit Prometheus ConfigMap:

  • Retrieve the Prometheus ConfigMap:
kubectl get configmap prometheus-server -n monitoring -o yaml > prometheus-configmap.yaml
  • Edit prometheus-configmap.yaml to include remote write:
prometheus.yml: |   global:     scrape_interval: 15s      scrape_configs:     - job_name: 'kubernetes'       kubernetes_sd_configs:         - role: node      remote_write:     - url: 'http://<central-prometheus-server>:9090/api/v1/write'
  • Apply the updated ConfigMap:
kubectl apply -f prometheus-configmap.yaml

For Docker Swarm Clusters

Create a Prometheus Configuration File:

  • Create a prometheus.yml file:
global:   scrape_interval: 15s  scrape_configs:   - job_name: 'docker-swarm'     static_configs:       - targets: ['localhost:9090']  remote_write:   - url: 'http://<central-prometheus-server>:9090/api/v1/write'

Deploy Prometheus with Docker:

  • Create a docker-compose.yml file:
version: '3.3' services:   prometheus:     image: prom/prometheus     volumes:       - ./prometheus.yml:/etc/prometheus/prometheus.yml     ports:       - 9090:9090

Step 3: Configure Remote Write and Receive

Configure Remote Write on Cluster Prometheus Instances

  • Ensure that each cluster’s Prometheus instance has the remote_write configuration pointing to the central Prometheus server:
remote_write: - url: 'http://<central-prometheus-server>:9090/api/v1/write'Configure Remote Receive on Central Prometheus Server
  • Edit the central Prometheus server’s prometheus.yml to include:
remote_write: - url: 'http://<central-prometheus-server>:9090/api/v1/write' remote_read: - url: 'http://<central-prometheus-server>:9090/api/v1/read'

Step 4: Set Up Grafana Dashboards and Alerts

Create Grafana Dashboards:

  • Import pre-built dashboards from the Grafana dashboard repository or create custom dashboards.
  • Go to Dashboards > Manage > Import and enter the dashboard ID from Grafana’s dashboard repository.

Configure Alerts in Grafana:

  • Go to Alerting > Alert Rules.
  • Create new alert rules based on the metrics collected from the clusters.
  • Define conditions, notification channels, and actions for the alerts.

Test and Verify:

  • Ensure that the data from all clusters is being received by the central Prometheus server.
  • Verify the Grafana dashboards display the correct metrics.
  • Test alerting by simulating conditions that would trigger alerts.

Conclusion

This plan provides a comprehensive approach to setting up multi-cluster monitoring with Grafana and Prometheus. By following these steps, you will be able to centralize the monitoring of multiple Kubernetes and Docker Swarm clusters, simplifying management and ensuring visibility into the performance and health of your infrastructure.

--

--

Adityakale
Adityakale

Written by Adityakale

Software Engineer with expertise in CI/CD, containerization, and infrastructure monitoring.

No responses yet