Grafana Backup via API II

vorhergehende Artikel in: Linux TeleGrafana Git(lab|hub)
18.02.2023

Nachdem ich bereits über erste Versuche, Backups der Grafana-Konfiguration anzufertigen berichtet habe, habe ich mich nun noch einmal darangemacht und das Projekt in eine Form gebracht, in der es vielleicht auch für andere nützlich sein könnte.

Bisher waren die Skripte nur in der Lage, Datasources und Dashboards zu sichern und Dashboards wiederherzustellen - Datasources mussten zunächst noch manuell hinzugefügt werden.

Die von Grund auf überarbeiteten Skripte sind jetzt in einem Repository veröffentlicht worden, das man einfach forken kann - anschließend muss man noch eine Konfigurationsdatei anlegen und kann dann sofort das erste Backup anfertigen. Die Skripte sorgen auch dafür, dass alle hinzugefügten oder modifizierten Konfigurationen in das lokale Repository committed werden - möchte man auch auf das remote Repo pushen, muss man das noch selbst anstoßen.

Aus der Readme des Projektes:

Dies ist ein Projekt, das eine Reihe von Bash-Skripten enthält, die ein geordnetes Backup/Restore für Grafana möglich machen. Das Skript grafana_backup.sh extrahiert alle

  • Dashboards
  • Datenquellen
  • Ordner
aus der Grafana-Installation, die in einer Datei namens env.sh definiert ist - ein Beispiel für der Inhalt dieser Datei kann durch Ansehen des Beispiels env.sh_example eingesehen werden.

Es enthält

  • Zugriffstoken zum Lesen/Schreiben
  • Host und Port der grafana-Instanz
  • einige zusätzliche Flags für curl - zum Beispiel um die Prüfung des TLS-Zertifikats zu überspringen.
Das Skript grafana_backup.sh fügt automatisch alle neuen oder geänderten JSON-Dateien zum Repository hinzu und committed die Änderungen mit den aktuellen Zeitstempel als Commit-Nachricht - Alles, was der Benutzer tun muss, ist sie manuell in ein remote Repository zu pushen - falls das gewünscht ist. Das Skript grafana_restore.sh ist das Gegenstück dazu grafana_backup.sh:

Es stellt

  • Dashboards
  • Datenquellen
  • Ordner
aus dem Backup in die in env.sh_example konfigurierte Instanz wieder her.

Alternativ dazu kann dafür auch das Skript grafana_restore_ba.sh verwendet werden: Dieses erlaubt es, den Inhalt dieses Repositorys in einer beliebigen Grafana-Instanz wieder herzustellen. Dieses Skript unterscheidet sich von grafana_restore.sh dahingehend, dass es keine Zugriffstoken für die Autorisierung verwendet, sondern stattdessen Basic Auth. Dies ist praktisch, wenn die Wiederherstellung gegen ein neu installiertes System durchgeführt werden soll - zum Beispiel eine grafana-Docker-Instanz, in der noch keine Zugriffstoken konfiguriert sind.

Dies ist auch die Basis für die in .gitlab-ci.yml vorbereitete Gitlab-Pipeline: Es gibt eine auskommentierte Stage namens deploy - Wenn diese aktiviert (und korrekt konfiguriert) wurde, wird das Skript grafana_restore_ba.sh ausgeführt und das Backup in der konfigurierten Instanz wiederhergestellt. So kann man problemlos verifizieren, dass das Backup korrekt erstellt wurde und ggf. wiederhergestellt werden kann.

Alle Artikel rss Wochenübersicht Monatsübersicht Github Repositories Gitlab Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

Neueste Artikel

  • SQL Funktionen in SQLite als BeanShell-Scripts

    Ich habe bereits hin und wieder über Erweiterungen der sQLshell berichtet, die bestimmte spezifische, proprietäre Features des jeweiligen DBMS in der sQLshell verfügbar machen.

    Weiterlesen...
  • Spieleengine IX

    Es gibt seit Ewigkeiten mal wieder Neues von meiner eigenen Spieleengine!

    Weiterlesen...
  • Neue Version plantumlinterfaceproxy napkin look

    Es gibt eine neue Version des Projektes plantumlinterfaceproxy - Codename napkin look.

    Weiterlesen...

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muß damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.