-
-
Save crisidev/bd52bdcc7f029be2f295 to your computer and use it in GitHub Desktop.
KEY=XXXXXXXXXXXX | |
HOST="https://metrics.crisidev.org" | |
mkdir -p dashboards && for dash in $(curl -k -H "Authorization: Bearer $KEY" $HOST/api/search\?query\=\& |tr ']' '\n' |cut -d "," -f 5 |grep slug |cut -d\" -f 4); do | |
curl -k -H "Authorization: Bearer $KEY" $HOST/api/dashboards/db/$dash > dashboards/$dash.json | |
done |
thanks, this works well except if dashboard has a "/" in the name (or another character that would need escaping as a filename).
Thanks, that works fine. Here is a tiny update based on that, using sed to replace "/" with "-".
#!/bin/bash
set -o errexit
set -o pipefail
# set -x
# e.g. http://localhost:8888 (no trailing slash)
FULLURL="$1"
# API key
# e.g. eyJr0000000000000000000000000000000000000000000000000000000000000000000000000000
headers="Authorization: Bearer $2"
in_path=dashboards_raw
set -o nounset
echo "Exporting Grafana dashboards from $FULLURL"
mkdir -p $in_path
curl -H "$headers" -s "$FULLURL/api/search?query=&" > tmp.json
for dash in $(curl -H "$headers" -s "$FULLURL/api/search?query=&" | jq -r '.[] | select(.type == "dash-db") | .uid'); do
curl -H "$headers" -s "$FULLURL/api/search?query=&" 1>/dev/null
dash_path="$in_path/$dash.json"
curl -H "$headers" -s "$FULLURL/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 "$folder"
mv -f $in_path/dashboard.json "$folder/${title}.json"
echo "exported $folder/${title}.json"
done
rm -r $in_path
Hello!
I'm trying to create automatization of export dashboards, folders, datasources from all org.
My problem:
- Trying to export dashboard from folder "Test" via api
- Delete dashboard via UI
- Trying to import dasboard via api
- Open UI Grafana, dashboard was recreated at "General" folder.
What i try to do: - Login to Grafana, create folder "Test" and in this folder dashboard "Test_dashboard".
- Login to Orgs, get list of dashboards via api
curl --silent -u $user:$pass "${grafanaurl}/api/search?query=&" | jq -r '.[] | select(.type == "dash-db") | .uid'
- Download dashboard via curl
curl --silent -u $user:$pass "${grafanaurl}/api/dashboards/uid/$dash" | jq -r . >${dash}.json
- Delete dashboard from UI Grafana.
- Import this dashboard to Grafana via curl
cat $FILE | jq '. * {overwrite: true, dashboard: {id: null}}' | curl -X POST -H "Content-Type: application/json" -u $user:$pass "$grafanaurl/api/dashboards/db" -d @- ;
- Open UI Grafana, dashboard was recreated at "General" folder. (Expected to appear in the "Test" folder)
Can anyone help with this problem? The documentation says that the JSON file should have "folderId or the folderUid property".
Link: https://grafana.com/docs/grafana/latest/developers/http_api/dashboard/#create--update-dashboard
In JSON file i have all tags, because grafana make it itself.
Tryin to reduce nubmer of it , move from meta, but it doesnt work.
- Open UI Grafana, dashboard was recreated at "General" folder. (Expected to appear in the "Test" folder)
Can anyone help with this problem? The documentation says that the JSON file should have "folderId or the folderUid property". Link: https://grafana.com/docs/grafana/latest/developers/http_api/dashboard/#create--update-dashboard In JSON file i have all tags, because grafana make it itself. Tryin to reduce nubmer of it , move from meta, but it doesnt work.
You have to put the folderUid into the root object.
See my solution here: https://medium.com/@stefan4all/grafana-export-import-of-dashboards-39cc502faa2c
Hello guys!
I created this script https://gist.github.com/aeciopires/e1adfd808097ee9260a419263ccae099 based in work of @KMurphs in this comment: https://gist.github.com/crisidev/bd52bdcc7f029be2f295?permalink_comment_id=4197302#gistcomment-4197302
The script can export datasources and dashboards of Grafana, but I only tested with Grafana 6.6.x
Example of execution script:
chmod +x exportGrafanaDashboadsAndDatasources.sh ./exportGrafanaDashboadsAndDatasources.sh [INFO] Datasource AWS_Cloudwatch_PRD-125 exported [INFO] Encrypting the file ./backup_grafana_dashboards_20230321_1347/datasources/grafana-datasource-AWS_Cloudwatch_PRD-125.json... [..] [INFO] Dashboard alerts-prometheus-kGqyea3Zz exported [..]
do you have anything to export grafana alerts?
A simple script to export grafana rules/alerts
#!/bin/bash
GRAFANA_DOMAIN=$1
GRAFANA_TOKEN=$2
curl -X GET -H "Authorization: Bearer ${GRAFANA_TOKEN}" \
"https://${GRAFANA_DOMAIN}/api/ruler/grafana/api/v1/rules" | jq > './alerts.json'
hey, I want help in exporting data used by grafana for a dashboard. Does someone know anything related to how to do it?
Hello guys!
I created this script https://gist.github.com/aeciopires/e1adfd808097ee9260a419263ccae099 based in work of @KMurphs in this comment: https://gist.github.com/crisidev/bd52bdcc7f029be2f295?permalink_comment_id=4197302#gistcomment-4197302
The script can export datasources and dashboards of Grafana, but I only tested with Grafana 6.6.x
Example of execution script:
chmod +x exportGrafanaDashboadsAndDatasources.sh ./exportGrafanaDashboadsAndDatasources.sh [INFO] Datasource AWS_Cloudwatch_PRD-125 exported [INFO] Encrypting the file ./backup_grafana_dashboards_20230321_1347/datasources/grafana-datasource-AWS_Cloudwatch_PRD-125.json... [..] [INFO] Dashboard alerts-prometheus-kGqyea3Zz exported [..]
I successfully executed the script, but how do I import it?
Just trowing here some recent contribution from "Gonzalo Di Biase" on Grafana Slack
export KEY=XXXXXXXXXXXXX
export HOST=https://mygrafana.mydomain
for dash in $(curl -s -k -H "Authorization: Bearer ${KEY}" ${HOST}/api/search\?query\=\& | jq -r '.[] | select(.type == "dash-db") | .uid'); do
curl -s -k -H "Authorization: Bearer ${KEY}" ${HOST}/api/dashboards/uid/$dash \
| jq '. |= (.folderUid=.meta.folderUid) | del(.meta) |del(.dashboard.id) + {overwrite: true}' \
> "${SCRIPT_DIR}/export/${NAME}/dashboards/${dash}.json"
echo "Dashboard: ${NAME} - ${dash} saved."
done
.meta.folderTitle
it doesn't work wuth grafana v7.3.1 API :(
It's seems like folderUid doesn't exist in meta block ..
"meta": {
"type": "db",
"canSave": true,
"canEdit": true,
"canAdmin": true,
"canStar": true,
"slug": "tcp-status",
"url": "/d/YCaAbWJIk/tcp-status",
"expires": "0001-01-01T00:00:00Z",
"created": "2024-03-15T11:24:21+01:00",
"updated": "2024-03-15T11:57:33+01:00",
"updatedBy": "admin",
"createdBy": "admin",
"version": 3,
"hasAcl": false,
"isFolder": false,
"folderId": 27,
"folderTitle": "system",
"folderUrl": "/dashboards/f/Oe6cfZ1Iz/system",
"provisioned": false,
"provisionedExternalId": ""
}
thanks, this works well except if dashboard has a "/" in the name (or another character that would need escaping as a filename).