28 lines
895 B
Bash
Executable File
28 lines
895 B
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
GRAFANA_URL=http://localhost:3000
|
|
GRAFANA_USER=admin
|
|
GRAFANA_PASS=holamundo
|
|
BACKUP_DIR=/opt/server/backups/grafana_dashboards
|
|
KEEP=4
|
|
|
|
mkdir -p "$BACKUP_DIR"
|
|
|
|
STAMP=$(date +%Y%m%d)
|
|
TMP_DIR=$(mktemp -d)
|
|
trap 'rm -rf "$TMP_DIR"' EXIT
|
|
|
|
curl -sf -u "$GRAFANA_USER:$GRAFANA_PASS" "$GRAFANA_URL/api/search?type=dash-db" \
|
|
| jq -r '.[].uid' \
|
|
| while read -r uid; do
|
|
dashboard_json=$(curl -sf -u "$GRAFANA_USER:$GRAFANA_PASS" "$GRAFANA_URL/api/dashboards/uid/$uid")
|
|
title=$(jq -r '.dashboard.title' <<< "$dashboard_json")
|
|
safe_title=$(echo "$title" | tr -c 'A-Za-z0-9' '_' | sed 's/_\+/_/g; s/^_//; s/_$//')
|
|
echo "$dashboard_json" > "$TMP_DIR/${safe_title}__${uid}.json"
|
|
done
|
|
|
|
tar czf "$BACKUP_DIR/grafana_dashboards_$STAMP.tar.gz" -C "$TMP_DIR" .
|
|
|
|
ls -1t "$BACKUP_DIR"/grafana_dashboards_*.tar.gz | tail -n +$((KEEP + 1)) | xargs -r rm --
|