0-Home
Github
TraceMyPodsOfficial
TMP-docs
Monitoring

πŸ“Š 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
  • kubectl and helm installed 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 loki

Export default values for customization:

helm show values grafana/loki-stack > loki.yaml

NOTE: In loki.yaml, modify the grafana section:

grafana:
  enabled: true
  image:
    tag: latest

This 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-namespace

Loki 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 monitoring

Prometheus 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 monitoring

Retrieve Grafana admin password:

kubectl get secret --namespace monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

Expose Grafana locally via port-forward:

kubectl port-forward service/grafana --namespace monitoring 3000:80

Alternatively, 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 NameDashboard ID
Kubernetes Addons (Prometheus)19105
Kubernetes Cluster (Global)15757
Kubernetes Namespaces View15758
Kubernetes Nodes View15759
Kubernetes Pods View15760
NVIDIA DCGM Exporter Dashboard12239
Kubernetes Nodes8171
Kubernetes Pod Metrics747
Kubernetes App Metrics1471

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

πŸ’¬ Need a Quick Summary?

Hey! Don't have time to read everything? I get it. 😊
Click below and I'll give you the main points and what matters most on this page.
Takes about 5 seconds β€’ Uses Perplexity AI