Grafana Backup via API II

vorhergehende Artikel in: Linux OpenSource TeleGrafana
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 Codeberg Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Multi-User-WebDAV, Docker, GitHub

    17.11.2019

    Nachdem ich mich in letzter Zeit verstärkt mit Docker und dem zugehörigen Ökosystem beschäftige, habe ich begonnen, verschiedenste Dienste in Containern zu testen um zu sehen, ob in manchen Fällen LXC oder KVM nicht doch die bessere Wahl wäre...

    Weiterlesen...

Neueste Artikel

  • Migration der Webseite und aller OpenSource Projekte

    In eigener Sache...

    Weiterlesen...
  • AutoHideToolbar für Java Swing

    Ich habe eine neue Java Swing Komponente erstellt: Es handelt sich um einen Wrapper für von JToolBar abgeleitete Klassen, die die Werkzeugleiste minimieren und sie nur dann einblenden, wenn der Mauszeiger über ihnen schwebt.

    Weiterlesen...
  • Integration von EBMap4D in die sQLshell

    Ich habe bereits in einem früheren Artikel über meine ersten Erfolge berichtet, der sQLshell auf Basis des bestehenden Codes aus dem Projekt EBMap4D eine bessere Integration für Geo-Daten zu spendieren und entsprechende Abfragen, bzw. deren Ergebnisse auf einer Kartenansicht zu visualisieren.

    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, muss 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 Codeberg-Repositories findet man hier.