Geekzeug

Google Sheets x Grafana – so machen Graphen Spaß!

Wie nutzt man Grafana, um Daten aus einer Tabellenkalkulation zu visualisieren?

Google Sheets kennt vermutlich jeder - quasi Excel in der Cloud (nur schlimmer). Grafana ist im Techie- und Business-Umfeld eine große Nummer, der Standard für Dashboards und hübsche Aufbereitung von Daten. Dieser Artikel zeigt Euch Schritt für Schritt, wie man beide Tools kombiniert. Als Beispiel dient die populärste Anwendung überhaupt: Eine Kostenübersicht.

Sheets und Grafana

Zu Google Sheets muss man wohl nicht viel sagen, es ist halt eine Tabellenkalkulation wie Microsoft Excel oder LibreOffice Calc. Nur, dass sie Teil des arg gewöhnungsbedürftigen "Google-Offices" ist und weniger kann. Gut ist aber, dass die Tabellen online zur Verfügung stehen und entsprechend mit Mensch und Maschine geteilt werden können.

Grafana ist - der Name lässt da wohl auch wenig Raum für Zweifel - ein Tool zur Visualisierung von Daten. Oder wie Grafana selbst es ausdrückt: "Grafana ist die Open-Source-Analyse- und Überwachungslösung für jede Datenbank." Klingt auf Englisch besser.

Open Source ist schon mal gut, somit ist Grafana kostenlos und verlangt auch nicht nach Daten und Konten. Analyse- und Überwachungslösung deutet schon an, dass Grafana mehr kann als "nur" visualisieren. Grafana taugt nämlich auch als Monitoring-System und kann Benachrichtigungen verschicken, wenn bestimmte Ereigenisse eintreten. Und noch vieles vieles mehr.

Hier relevant sind aber vor allem zwei Fähigkeiten von Grafana: Daten manipulieren und visualisieren.

Die finalen Visualisierungen zeigen natürlich jegliche Änderungen an der Datenbasis live an - und sie lassen sich wunderbar zum Beispiel in Webseiten einbetten.

Gratis-SaaS: Grafana lässt sich super einfach lokal betreiben, unter Windows genügt im Grunde ein simpler Doppelklick auf die Installationsdatei. Aber auch die Cloud-Version, also das SaaS-Angebot, lässt sich kostenlos nutzen. Natürlich mit Einschränkungen, aber die sind hier kein Show-Stopper!

Beispielprojekt

Laut ChatGPT werden Excel & Co. im Privaten vor allem genutzt, um Einnahmen und Ausgaben zu Verwalten. Also müssen erstmal Daten her. Falls Ihr Demo-Daten benötigt, fragt einfach die KI! Ich habe mir hier 100 realistische Datensätze für folgende Spalten generieren lassen:

  • ID
  • Datum
  • Festgehalt
  • Bonus
  • Gewinne Tippspiele
  • Kaltmiete
  • Nebenkosten
  • Kosten für Lebensmittel
  • Kreditraten
  • Unterhaltung
  • Auto
  • Elektronik
  • Sonstiges
google sheets table.
Beispieldaten online bei Google Sheets

Am Ende soll ein Graph entstehen, der folgende Daten zeigt:

  • Einnahmen
  • Ausgaben
  • Vermögen

Und logisch: Viele Wege führen zum Ziel. Die Berechnungen könnte man hier direkt in Sheets erledigen. Aber eigentlich ist es schöner, Grafana ganz schlichte, rohe Datensätze zu übergeben und die Weiterverarbeitung eben Grafana zu überlassen.

Da es recht viele Einzelschritte sind, hier die Übersicht:

  • Grafana installieren
  • Google Sheets für Zugriff einrichten
  • Sheets-Daten in Grafana importieren
  • Daten aufbereiten für die Visualisierung

Im Grunde ist das Prozedere nicht sonderlich kompliziert, Grafana lässt sich weitgehend intuitiv nutzen -, sofern man schon länger was mit IT am Hut hat. Und mit Data Mining. Und Business-Plattformen. 😉

Grafana einrichten

Es gibt Grafana in vielen Darreichungsformen - hier der Weg für eine normale Windows-Installation:

  • Installation durchlaufen lassen
  • "grafana-server.exe" starten (standardmäßig unter C:\Program Files\GrafanaLabs\grafana\bin)
  • "localhost:3000" im Browser öffnen
  • Anmelden mit admin/admin und Passwort ändern

Anschließend könnt Ihr direkt das Google-Sheets-Plug-in installieren:

  • Connections/Add new connection
  • "Google Sheets" suchen und installieren
  • "Add new datasource" anklicken
plugins in grafana.
Integrierter "App-Store"

Eine "Connection" ist hier also das Plug-in selbst und mit "Datasource" ist entsprechend eine konkrete Tabelle gemeint.

An dieser Stelle zeigt Grafana auch einen (eingeklappten) Bereich namens "Configure Google Sheets Configuration" mit einer simplen Anleitung samt benötigter Links. Das folgende Kapitel spielt im Grunde einfach nur nochmal diese Anleitung durch.

Zugriff auf Google Sheets einrichten

Für den Zugriff auf private Tabellen benötigt Grafana eine Google-JWT-Datei (JSON Web Token) und die Tabelle selbst muss mit Grafana geteilt werden. So geht's:

Sheets API

Google Sheets API aktivieren.

sheets api.
Zugriff auf Sheets

Drive API

Google Drive API aktivieren.

drive api.
Zugriff auf Sheet-Liste

Service account

Service account erstellen.

connection erstellen.
Ein Service-Account ist quasi ein Nutzerkonto nur für Dienste

Namen und Beschreibung für das Service-Konto angeben. An dieser Stelle wird eine Email-Adresse generiert - kopiert sie und speichert dann.

langweilige config.
Die generierte Email-Adresse wird zum Teilen des Sheets genutzt

Öffnet den eben erstellten Service-Account per Klick auf die Email.

mehr langweilige google api sachen.
Für Account-Details, Mail anklicken

Im Reiter Keys kann nun ein Schlüssel für den Zugriff generiert werden, hier im Format JSON.

es soll ein json werden.
Yep, JSON

Die JSON-Datei wird heruntergeladen und die Email-Adresse sollte in der Zwischenablage liegen.

Tabelle in Grafana einbinden

Nun müsst Ihr die Google-Tabelle über die normale Sharing-Funktion teilen - natürlich mit der eben generierten Email-Adresse:

teilen der tabelle.
Tabelle teilen - mit der Service-Account-Adresse

Nun geht es wieder zurück nach Grafana. Hier sollte immer noch die Konfiguration der Datenquelle warten. Sofern Google JWT File ausgewählt ist, lässt sich die heruntergeladene JSON-Datei nun einfach per Drag&Drop in die Konfiguration ziehen - wo sie dann so dargestellt wird:

grafana nach laden der json.
Die heruntergeladene JSON-Datei in der Plug-in-Konfiguration

Grafana prüft die Verbindung und wenn alles okay ist, bietet sich ein Klick auf Explore view an, um zu gucken, ob die Tabelle wirklich richtig importiert wird.

bestätigung der config.
Erkunden? Yep, erkunden.

Beim Erkunden einfach das Spreadsheet/die Tabelle auswählen (dank Zugriff auf die Drive-API gibt es hier diese Dateilisten).

daten in grafana.
Heureka! Die Rohdaten in Grafana

Visualisierung erstellen

Nach der vielen Vorarbeit geht es nun endlich an den spaßigen Teil, die Aufbereitung der Daten. Der Übersichtlichkeit halber hier nochmal die Grafana-Teile in der Übersicht:

  • Connection: Plug-in für Google Sheets
  • Datasource: Eine konkrete Tabelle
  • Dashboard: Sammlung mehrerer Visualisierungen
  • Visualization/Panel: Graphen und sonstige grafische Darstellungen

Erstellt also zunächst ein Dashboard und eine Visualisierung:

alles neu macht der mai, und dashboards.
Connection -> Datasource -> Dashboard -> Visualization 😉

Datum korrigieren (aka ami-fizieren)

In der neuen Visualisierung lässt dann wieder die Google-Tabelle im Feld Spreadsheet ID angeben. Aber statt schicker Daten, kommt erstmal ein Data is missing a time field. Das ist Absicht 😈

nix is, keine visualisierung, da fehlt was. Und ich muss jetzt mal fragen, hier im ALT-Tag: Gibt es wirklich Blinde, die hier einen Artikel zu Visualisierungen lesen? Ich weiß ja nicht. Aber wenn doch: Bei Fragen, meld dich, wer hier landet, hat auch Support verdient.
Nüschts. Wat'n f...

Oben kann man via Table view auf die reine Datenansicht wechseln. Standardmäßig versucht Grafana, Datenreihen auf einer Zeitebene anzuzeigen - und das dafür benötigte Datum vermisst das dumme Ami-Tool ... Denn natürlich versteht es nicht von selbst, dass 01.01.2020 ein Datum ist - aber so geben wir es hierzulande ja nun mal an.

de-datum in grafana als  text.
Für Grafana nur Text, ja nee, is' klar

Also erkennt Grafana das Datum nur als Text und der muss konvertiert werden. Das geht in Grafana über den Punkt Transformations, der unterhalb der Tabelle zu finden ist und noch häufiger zum Einsatz kommt. Über Add another transformation kommt eine großzügige Auswahl vorhandener Transformationen - nicht wirklich leichte Kost auf den ersten Blick.

transformationen zur auswahl.
Nicht trivial, aber die Hilfe von Grafana ist schon sehr sehr gut!

Für das Datum braucht es die Transformation Convert field type. Zum Konvertieren wird hier das Feld ausgewählt, dann das gewünschte Format Time und letztlich das verwendete Format, hier also DD.MM.YYYY. Daraus macht Grafana dann YYY-DD-MM 00:00:00 inklusive Uhrzeit.

grafana erkennt datum nicht als solches.
Ein Datum ...

Wieder zurück zur grafischen Ansicht und siehe da: Alle Einnahmen und Ausgaben finden sich samt Legende im Panel.

erster graph mit vielen werten.
Nachdem wir den Amis Datumsangaben beigebracht haben ...

Neue Daten berechnen

Nun sollen aber die zusammengerechneten Werte für Einnahmen, Ausgaben und gespartes Vermögen integiert werden. Die Berechnung geht wieder über die Transformations.

Zunächst braucht es dafür zwei Transformationen vom Typ Add field from calculation mit dem Modus Reduce row und der Kalkulation Total (Summe), den Namen Einnahmen beziehungsweise Ausgaben und den zugehörigen Feldern, die einfach unter Operation angeklickt werden können - wie unten im Bild zu sehen. Und dann kommt noch eine dritte Transformation, die wiederum die beiden neu generierten Felder unter dem Namen Gewinn/Verlust (aka Vermögen) addiert.

transformationen für summen.
Nur ein wenig Addition

Das Ergebnis: Ein ziemlich überladener Graph.

graph mit transformierten feldern (einnahmen, ausgaben, gewinn).
Toll, aber zu viele Details

Wenn jetzt nur die drei eigens berechneten Daten visualisiert werden sollen, folgt eine fünfte Transformation, nun vom Typ Organize fields by name. Darüber lassen sich einzelne Graphen umbenennen oder eben auch ausblenden.

transformation als filter.
Auch Filter fallen unter Transformation

Zu guter Letzt: Gewinn und Verlust pro Monat ist ja gut und schön, aber man will doch sehen, wie das eigene Vermögen (bestenfalls) wächst und wächst und wächst. Also folgt Transformation Nummer 6, wieder vom Typ Add field from calculation mit der Kalkulation Total, aber hier im Modus Cumulative functions.

Die fertige Visualisierung zeigt dann auch das Vermögenswachstum.

finaler graph samt kumuliertem vermögen.
Jetzt könnte man noch Zinseszins hineinrechnen ...

Fazit

Grafana ist ein wirklich nettes Spielzeug und ziemlich mächtiges Werkzeug! Man kann es als Monitoring-System nutzen, als Meldesystem für Sicherheitsvorfälle, Log-Manager, Backend für Synthetic Monitoring (Tests aus Nutzersicht) und natürlich Manager-Befried(ig)er - denn klar, wo Dashboards sind, sind Manager nicht weit 😉

Erfreulich auch: Die Open-Source-Version bringt alle wesentlichen Funktionen mit sich. Kostenpflichtig wird Grafana eigentlich nur dann, wenn Datenquellen genutzt werden sollen, die ihrerseits kostenpflichtig sind. Nach dem Motto: Wer für Produkt XY zahlt und die Daten in Grafana einspeist, kann wohl auch für Grafana zahlen. Faires Konzept!

Natürlich ist Grafana für so ein simples Beispiel wie oben völlig überdimensioniert, zumindest was die Einarbeitung angeht. Andererseits ist man damit recht fix durch. Mit viel Erfahrung genügt ein Nachmittag, IT-/Daten-Laien müssten vielleicht ein, zwei Wochenenden einplanen.

Und was könnte man nicht alles visualisieren ... Ergebnislisten von Sportveranstaltungen, Vereinsfinanzen, Wetterdaten, Zugriffsstatistiken von Google Analytics, GitHub-/GitLab-Aktivitäten und so weiter. Oder wie wäre es mit Daten aus dem IT-Monitoring? Checkmk lässt sich zum Beispiel ebenfalls als Datenquelle einrichten, so dass etwa Daten zur CPU- oder RAM-Auslastung direkt in schicken Dashboards landen. Nun, das kann Checkmk auch selbst sehr gut, aber in Grafana dürfen Checkmk-Daten eben auch mit anderen zusammenspielen 😉

Und wer partout keinen Bock auf fancy, neumodische Manager-Liebchen wie Grafana hat oder einfach masochistisch veranlagt ist: Gnuplot tut's auch - im Zweifel anpassbarer, im Zweifel performanter, im Zweifel noch verfügbar, wenn Grafanas aktueller Ruhm längst verblasst ist ... Ihr kennt Gnuplot gar nicht? Schande über Euch!

Hier mal ein beispielhafter Gnuplot-Code:

set terminal png size 960,700 enhanced font "Helvetica,15"
set object 1 rectangle from screen 0,0 to screen 1,1 fillcolor rgb"#D5D8DC" behind
set xtics rotate by 70
set xtics right
set bmargin 5
set xtics font "Helvetica,12"
set boxwidth 0.3
set style fill solid
set key font "Helvetica,15"
set key over title "Die Legende"
set yrange [0:]
date = system("date +%d.%m.%Y")
set label 1 "Erstellt am ".date."." center at screen 0.5, screen 0.01 font "Helvetica,7"
plot "artikel.dat" using 1:xtic(2) with boxes lc rgb "#E85B19" title "Testing"

Der dann, bei entsprechender "artikel.dat", zu diesem Diagramm führen würde:

gnuplot-diagramm, viel schöner eigentlich.
Gnuplot - weniger Bling, aber das kann auch was 😉

Wie sieht Eure Präferenz aus - Grafana oder Gnuplot?

×
Produktpreise und -verfügbarkeit sind zum angegebenen Datum / Uhrzeit korrekt und können sich ändern. Alle Preis- und Verfügbarkeitsinformationen auf https://www.amazon.de/ zum Zeitpunkt des Kaufs gelten für den Kauf dieses Produkts.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Schaltfläche "Zurück zum Anfang"