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

  • Brian May, Kerry Ellis & Vittorio Grigolo: Bohemian Rhapsody

    19.05.2019

    Eine andere Sicht auf den schönen Queen-Klassiker

    Weiterlesen...

Neueste Artikel

  • sQLshell, SQLite und Redis - oh my!

    Ich habe in letzter Zeit hin und wieder mit der sQLshell und SQLite herumgespielt - Neulich wurde ich gefragt, ob die sQLshell eigentlich auch Redis kann...

    Weiterlesen...
  • bad-certificates Version 3.0.0

    Das bereits vorgestellte Projekt zur automatisierten Erzeugung von Zertifikaten mit allen möglichen Fehlern wurde um eine weitere Kategorie von Zertifikaten erweitert

    Weiterlesen...
  • Erste Vor-Version eines Gis-Plugin für die sQLshell

    Wie bereits in einem früheren Artikel erwähnt plane ich, demnächst ein Plugin für die sQLshell anzubieten, das eine Visualisierung von Daten mit räumlichem Bezug im Stil eines Geoinformationssystems erlaubt.

    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.