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

  • Certstream, InfluxDB, Grafana und Netflix

    16.04.2019

    Nachdem ich vor kurzem über mein erstes Spielen mit dem certstream berichtete, habe ich weitere Experimente gemacht und die Daten zur besseren Auswertung in eine InfluxDB gepackt, um sie mit Grafana untersuchen zu können.

    Weiterlesen...

Neueste Artikel

  • Die sQLshell ist nun cloudnative!

    Die sQLshell hat eine weitere Integration erfahren - obwohl ich eigentlich selber nicht viel dazu tun musste: Es existiert ein Projekt/Produkt namens steampipe, dessen Slogan ist select * from cloud; - Im Prinzip eine Wrapperschicht um diverse (laut Eigenwerbung mehr als 140) (cloud) data sources.

    Weiterlesen...
  • LinkCollections 2024 III

    Nach der letzten losen Zusammenstellung (für mich) interessanter Links aus den Tiefen des Internet von 2024 folgt hier gleich die nächste:

    Weiterlesen...
  • Funktionen mit mehreren Rückgabewerten in Java

    Da ich seit nunmehr einem Jahr bei meinem neeun Arbeitgeber beschäftigt und damit seit ungefähr derselben Zeit für Geld mit Python arbeite, haben sich gewisse Antipathien gegenüber Python vertieft (ich kann mit typlosen Sprachen einfach nicht umgehen) - aber auch einige meiner Gründe, Python zu lieben sind ebenso stärker geworden. Einer davon ist der Fakt, dass eine Methode in Python mehr als einen Wert zurückgeben kann.

    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.