
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

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

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.

Drive API
Google Drive API aktivieren.

Service account
Service account erstellen.

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

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

Im Reiter Keys kann nun ein Schlüssel für den Zugriff generiert werden, hier im Format 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:

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 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.

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

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:

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 😈

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.

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.

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.

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

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.

Das Ergebnis: Ein ziemlich überladener Graph.

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.

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.

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:

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