Skip to content

Instantly share code, notes, and snippets.

@vchrombie
Last active May 8, 2023 19:31
Show Gist options
  • Save vchrombie/66301ef14d85352dc004769b81c52b03 to your computer and use it in GitHub Desktop.
Save vchrombie/66301ef14d85352dc004769b81c52b03 to your computer and use it in GitHub Desktop.
#!/bin/bash
set -o errexit
set -o pipefail
set -o nounset
headers="Authorization: Bearer $GRAFANA_API_KEY"
in_path="$GIT_SRC/dashboards_raw"
echo "Exporting Grafana dashboards from $GRAFANA_URL"
mkdir -p $in_path
curl -H "$headers" -s "$GRAFANA_URL/api/search?query=&" > tmp.json
for dash in $(curl -H "$headers" -s "$GRAFANA_URL/api/search?query=&" | jq -r '.[] | select(.type == "dash-db") | .uid'); do
dash_path="$in_path/$dash.json"
curl -H "$headers" -s "$GRAFANA_URL/api/dashboards/uid/$dash" | jq -r . > $dash_path
jq -r .dashboard $dash_path > $in_path/dashboard.json
title=$(jq -r .dashboard.title $dash_path | sed "s/\//-/g")
folder="$(jq -r '.meta.folderTitle' $dash_path | sed "s/\//-/g")"
mkdir -p "$GIT_SRC/$folder"
mv -f $in_path/dashboard.json "$GIT_SRC/$folder/${title}.json"
echo "exported $GIT_SRC/$folder/${title}.json"
done
rm -r $in_path
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment