Kubernetes Cluster Monitoring using Grafana & Prometheus

Architecture

+---------------------+
| Kubernetes Cluster |
+----------+----------+
|
v
+---------------------+
| kube-state-metrics |
+---------------------+
|
v
+---------------------+
| Node Exporter |
+---------------------+
|
v
+---------------------+
| Prometheus |
+---------------------+
|
v
+---------------------+
| Grafana Dashboard |
+---------------------+
|
v
+---------------------+
| Email Alerts |
+---------------------+

Prerequisites:

  • Ubuntu Server
  • Kubernetes Cluster
  • kubectl configured
  • Helm installed

Verify:

kubectl get nodes
helm version

Step 1: Create Monitoring Namespace

kubectl create namespace monitoring

Verify:

kubectl get ns

Step 2: Add Helm Repository

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

Check charts:

helm search repo prometheus-community

Step 3: Install Prometheus and Grafana

Install the kube-prometheus-stack package:

helm install monitoring prometheus-community/kube-prometheus-stack \
-n monitoring

Check pods:

kubectl get pods -n monitoring

Step 4: Verify kube-state-metrics

kubectl get pods -n monitoring | grep state

Check service:

kubectl get svc -n monitoring

Step 5: Verify Node Exporter

kubectl get daemonset -n monitoring

Check pods:

kubectl get pods -n monitoring -o wide

Step 6: Access Grafana

Check service:

kubectl get svc -n monitoring

Port forward:

kubectl port-forward svc/monitoring-grafana 3000:80 -n monitoring

create Grafana password:

kubectl get secret monitoring-grafana -n monitoring -o jsonpath="{.data.admin-password}" | base64 -d
echo

Then, open Browser,

http://localhost:3000

Login:

Username: admin
Password: (above created password)

Mahesh Wabale

Leave a Comment