Die Einrichtung der Data Sources bekommt man ja wieder hin. Aber um die eigenen oder angepassten Dashboards wÀre es sehr Àrgerlich.
Aus zwei verschiedenen Skripten hab ich mir jetzt eins erstellt, was in einem Rutsch alle Grafana Dashboards und Data Sources sichert.
Benötigt wird ein Grafana API Key. Der wird in Grafana unter: Configuration â API Keys erstellt.
Das Skript benötigt noch die Pakete curl und jq.
$ apt install curl jq
In dem Skript mĂŒssen die Variablen BACKUP_DIR, HOST, PWD und KEY angepasst werden!
FĂŒr die Data Sources wird der login des Webinterface benötigt, fĂŒr die Dashboards der API Key.
#!/usr/bin/bash TIMESTAMP=$(date +"%Y.%m.%d-%H.%M.%S") BACKUP_DIR="/opt/grafana.backup" HOST="http://localhost:3000" # backup grafana data sources PWD="grafana-password-here" if [ ! -d $BACKUP_DIR/datasources ] ; then mkdir -p $BACKUP_DIR/datasources fi curl -s "$HOST/api/datasources" -u admin:$PWD | jq -c -M '.[]'|split -l 1 - $BACKUP_DIR/datasources/ # backup grafana dashboards KEY="grafana-api-key-here" if [ ! -d $BACKUP_DIR/dashboards ] ; then mkdir -p $BACKUP_DIR/dashboards fi for dash in $(curl -k -H "Authorization: Bearer $KEY" $HOST/api/search\?query\=\& | jq -r '.[] | .uri'); do curl -k -H "Authorization: Bearer $KEY" $HOST/api/dashboards/$dash | sed 's/"id":[0-9]\+,/"id":null,/' | sed 's/\(.*\)}/\1,"overwrite": true}/' | jq . > $BACKUP_DIR/dashboards/$(echo ${dash} |cut -d\" -f 4 |cut -d\/ -f2).json done # create tar archive with timestamp tar cvfz $BACKUP_DIR/backup.grafana-$TIMESTAMP.tgz $BACKUP_DIR/da* # clean up old backups if you want # rm -r $BACKUP_DIR/da*
Die Verzeichnisstruktur nach einem erfolgreichen Backup.
/opt/grafana.backup/ âââ backup.grafana-2019.10.20-17.13.45.tgz âââ dashboards â  âââ proxmox.json â  âââ system.json â   âââ usv.json â  âââ vmware.json âââ datasources âââ aa âââ ab âââ ac âââ ad
Möchte man den Key und das Passwort nicht im Skript speichern, kann man diese auch aus einer externen Datei einlesen.
# im Homeverzeichnis die Datei .grafanakey mit dem API Key erstellen KEY=$(<~/.grafanakey) # im Homeverzeichnis die Datei .grafanapwd mit dem Passowrt erstellen PWD=$(<~/.grafanapwd)
Bei einem restore der Data Sources wird jede Datei aus dem Ordner /opt/grafana.backup/datasources als neue Date Source an Grafana gesendet.
for i in /opt/grafana.backup/datasources/*; do \ curl -X "POST" "http://localhost:3000/api/datasources" \ -H "Content-Type: application/json" \ --user admin:PASSWORD \ --data-binary @$i done
getestet mit Grafana 6.4.3
Kann ich die Dashboards denn auch wieder per curl importieren?
Nein, ĂŒber Import Dashboard können die aber problemlos hochgeladen werden.
Danke fĂŒr die MĂŒhe, magst du noch kurz erklĂ€re warum “sed ‘s/\(.*\)}/\1,”overwrite”: true}/'” gemacht wird?
Das mit der “id” verstehe ich, das diese beim Import gesetzt wird.
Danke!
Das weiĂ ich nicht, das script wurde so ĂŒbernommen.
grafana-dashboard-exporter
Hallo
wenn man den API in GRAFANA erzeugen will. gibt es die Möglichkeit “time to live” einzutragen.
“The api life duration. For example 1d if your key is going to last for one day. All the supported units are s,m,h,d,w,M,y”
Frage:
Ist es egal was ich hier vorwÀhle?
Vielen Dank fĂŒr die Hilfe
Damit gibts du an wann der API Key ablÀuft. Sollte also nicht zu kurz gewÀhlt werden.
Ich hab ihn bei mir auf 10y gestellt.
Danke
werde ich auch so einstellen.
Hi, kleiner Fehler in dem Script:
if [ ! -d $BACKUP_SIR/dashboards ] ; then
mĂŒsste
if [ ! -d $BACKUP_DIR/dashboards ] ; then
sein
Danke, habs berichtigt! ;)