#!/bin/bash TIMESTAMP=$(date +"%Y.%m.%d-%H.%M.%S") BACKUP_DIR="/mnt/nas/autobackups/grafana" HOST="http://localhost:3000" # backup grafana data sources PASSWD="<==eigenes Kennwort==>" if [ ! -d $BACKUP_DIR/datasources ] ; then mkdir -p $BACKUP_DIR/datasources fi curl -s "$HOST/api/datasources" -u admin:$PASSWD | jq -c -M '.[]'|split -l 1 - $BACKUP_DIR/datasources/ # backup grafana dashboards Generate API-Key with Grafana -> Configurtion -> API Keys # Api-Key for BackupGrafanaAdmin: KEY="<========= der eigene Grafana-API-Key ================>" 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 '.[] | .uid'); do curl -k -H "Authorization: Bearer $KEY" $HOST/api/dashboards/uid/$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*