#!/bin/bash set -euo pipefail # Import Grafana dashboards from grafana.com # Usage: ./import-grafana-dashboards.sh GRAFANA_URL="http://localhost:3000" GRAFANA_USER="admin" GRAFANA_PASSWORD=$(kubectl get secret -n grafana grafana -o jsonpath="{.data.admin-password}" | base64 --decode) # Dashboard IDs and their folders declare -A DASHBOARDS DASHBOARDS[7249]="Kubernetes" # K8s Cluster DASHBOARDS[11663]="Kubernetes" # K8s Resources Cluster DASHBOARDS[11664]="Kubernetes" # K8s Resources Namespace DASHBOARDS[11665]="Kubernetes" # K8s Resources Pod DASHBOARDS[11001]="Infrastructure" # Cert-Manager DASHBOARDS[16888]="Infrastructure" # Longhorn DASHBOARDS[9628]="Infrastructure" # PostgreSQL DASHBOARDS[14584]="Infrastructure" # ArgoCD echo "Starting port-forward to Grafana..." kubectl port-forward -n grafana svc/grafana 3000:80 & PF_PID=$! sleep 5 # Create folders echo "Creating folders..." for folder in "Kubernetes" "Infrastructure"; do curl -s -X POST -H "Content-Type: application/json" \ -u "${GRAFANA_USER}:${GRAFANA_PASSWORD}" \ -d "{\"title\":\"${folder}\"}" \ "${GRAFANA_URL}/api/folders" || true done # Import dashboards for dashboard_id in "${!DASHBOARDS[@]}"; do folder="${DASHBOARDS[$dashboard_id]}" echo "Importing dashboard ${dashboard_id} to folder ${folder}..." # Get folder UID folder_uid=$(curl -s -u "${GRAFANA_USER}:${GRAFANA_PASSWORD}" \ "${GRAFANA_URL}/api/folders" | \ jq -r ".[] | select(.title==\"${folder}\") | .uid") # Download and import dashboard dashboard_json=$(curl -s "https://grafana.com/api/dashboards/${dashboard_id}/revisions/1/download") # Prepare import payload import_payload=$(jq -n \ --arg folderUid "$folder_uid" \ --argjson dashboard "$dashboard_json" \ '{ dashboard: $dashboard, folderUid: $folderUid, overwrite: true }') curl -s -X POST -H "Content-Type: application/json" \ -u "${GRAFANA_USER}:${GRAFANA_PASSWORD}" \ -d "$import_payload" \ "${GRAFANA_URL}/api/dashboards/db" | jq -r '.status' done echo "Stopping port-forward..." kill $PF_PID echo "Dashboard import complete!" echo "Access Grafana at: https://grafana.kube.huskypup.net"