π Monitoring Stack Setup with Prometheus, Loki, and Grafana on Kubernetes
This guide walks through the process of deploying a full monitoring stack (Prometheus, Loki, and Grafana) into a Kubernetes cluster using Helm.
π§Ύ Prerequisites
- A running Kubernetes cluster
kubectlandhelminstalled and configured- Cluster access with sufficient privileges
π οΈ Step 1: Prepare Namespace and Repositories
Create a namespace for the monitoring stack and add the required Helm repositories:
kubectl create namespace monitoring
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo add grafana https://grafana.github.io/helm-charts
helm repo updateπ Step 2: Explore Loki Chart and Customize Values
Search for Loki in the Helm repo:
helm search repo lokiExport default values for customization:
helm show values grafana/loki-stack > loki.yamlNOTE: In
loki.yaml, modify thegrafanasection:grafana: enabled: true image: tag: latestThis enables Grafana and optionally pulls the latest image tag.
π Step 3: Deploy Loki Stack with Helm
Install or upgrade the Loki stack using the customized values:
helm upgrade --install --values loki.yaml loki grafana/loki-stack -n monitoring --create-namespaceLoki UI will be available at the following internal URL:
http://loki.monitoring.svc.cluster.local:3100π Step 4: Install Prometheus
helm install prometheus prometheus-community/prometheus -n monitoringPrometheus UI will be available at the following internal URL:
http://prometheus-server.monitoring.svc.cluster.localπ Step 5: Install Grafana
helm install grafana grafana/grafana -n monitoringRetrieve Grafana admin password:
kubectl get secret --namespace monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echoExpose Grafana locally via port-forward:
kubectl port-forward service/grafana --namespace monitoring 3000:80Alternatively, expose via NodePort (not recommended for production):
kubectl patch svc grafana -n monitoring -p '{"spec": {"type": "NodePort"}}'Access Grafana at http://<NodeIP>:<NodePort>
π Recommended Grafana Dashboards
You can import the following dashboards from Grafana Labs using their Dashboard IDs:
| Dashboard Name | Dashboard ID |
|---|---|
| Kubernetes Addons (Prometheus) | 19105 |
| Kubernetes Cluster (Global) | 15757 |
| Kubernetes Namespaces View | 15758 |
| Kubernetes Nodes View | 15759 |
| Kubernetes Pods View | 15760 |
| NVIDIA DCGM Exporter Dashboard | 12239 |
| Kubernetes Nodes | 8171 |
| Kubernetes Pod Metrics | 747 |
| Kubernetes App Metrics | 1471 |
Argo Pipelines :
prometheus
project: default
source:
repoURL: https://prometheus-community.github.io/helm-charts
targetRevision: 58.5.0
helm:
parameters:
- name: grafana.enabled
value: 'false'
releaseName: prometheus
values: |
grafana.enabled: false
chart: kube-prometheus-stack
destination:
server: https://kubernetes.default.svc
namespace: monitoring
syncPolicy:
syncOptions:
- CreateNamespace=true