Skip to content

Instantly share code, notes, and snippets.

@crisidev
Created October 7, 2015 20:35
Show Gist options
  • Save crisidev/bd52bdcc7f029be2f295 to your computer and use it in GitHub Desktop.
Save crisidev/bd52bdcc7f029be2f295 to your computer and use it in GitHub Desktop.
Command to export all grafana 2 dashboard to JSON using curl
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
@gutocarvalho
Copy link

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'

@isidhux
Copy link

isidhux commented Aug 25, 2023

hey, I want help in exporting data used by grafana for a dashboard. Does someone know anything related to how to do it?

@8763mb
Copy link

8763mb commented Nov 20, 2023

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?

@isaqueprofeta
Copy link

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

@saibug
Copy link

saibug commented Mar 15, 2024

.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": ""
    }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment