mirror of
https://gitlab.kube.huskypup.net/Scooby/Homelabv4.git
synced 2026-08-21 11:36:50 +00:00
70 lines
2.2 KiB
Bash
Executable File
70 lines
2.2 KiB
Bash
Executable File
#!/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"
|