mirror of
https://gitlab.kube.huskypup.net/Scooby/Homelabv4.git
synced 2026-08-20 23:16:49 +00:00
Initial commit
This commit is contained in:
Executable
+69
@@ -0,0 +1,69 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user