InfluxDB – Monitoring mit dem TIG-Stack


influxdata & TIG-Stack Header

Als Fortsetzung zum Tutorial InfluxDB unter Ubuntu 16.04/18.04 installieren und einrichten und des darin begonnenen Anwendungsszenarios, werde ich dir in diesem Tutorial Grafana als eine Möglichkeit der Analyse, Aufbereitung und des Managements von in InfluxDB gespeicherten Messungen vorstellen. Ich werde das erwähnte Anwendungsszenario dahingehend fortführen, dass ich die in der Datenbank namens OnlineMarketDevelopment als Teil der Messung namens SalesActivity eingebundenen Datenpunkte in Grafana plotten lasse. Wie bereits im oben genannten Tutorial angeschnitten, bietet das integrierte Open-Source-Projekt Grafana eine Komponente für die Benutzeroberfläche zum Management, zur Überwachung und graphischen Aufbereitung von in InfluxDB enthaltenen Messungen. Integriert bedeutet, dass sowohl InfluxDB als auch Grafana Komponenten eines Stacks sind, dem sogenannten TIG-Stack. Im Tutorial zum Thema InfluxDB – Monitoring mit dem TICK-Stack habe ich dir bereits vorgeführt, wie du die einzelnen Komponenten des TICK-Stacks installierst, einrichtest und Chronograf im Kontext dieses Stacks nutzt. Grafana stellt neben Chronograf eine weitere Option als Monitoring-Plattform dar.
Der TIG-Stack setzt sich aus den drei Komponenten Telegraf, InfluxDB und schließlich Grafana zusammen. Wie im Fall des TICK-Stacks, bildet Telegraf auch beim TIG-Stack die Schnittstelle, um in InfluxDB gespeicherte Daten an die Monitoring-Plattform – in diesem Fall Grafana – zu senden. Analog zum TICK-Stack lassen sich auch beim TIG-Stack mit InfluxDB Daten somit nicht lediglich wiederauffindbar aufbewahren, sondern sind via Telegraf auch jederzeit an die Monitoring-Plattform übertragbar. Letztlich fungiert Grafana dann auf Basis von Telegraf und InfluxDB als infrastrukturelles Monitoring-Tool.
Zunächst müssen diese drei Komponenten heruntergeladen, installiert und konfiguriert worden sein, damit du diese Infrastruktur nutzen kannst. Da wir zusammen InfluxDB bereits im Tutorial InfluxDB unter Ubuntu 16.04/18.04 installieren und einrichten erfolgreich installiert und konfiguriert haben und du im Tutorial InfluxDB – Monitoring mit dem TICK-Stack u.a. eine Anleitung dazu bekommen hast, wie du Telegraf auf deinem Server installierst und einrichtest, widme ich mich nun direkt dem letzten Bestandteil des TIG-Stacks.

Grafana installieren und einrichten

Um Grafana herunterzuladen und zu installieren, musst du die drei Kommandos in deinem Terminal ausführen, die du im Code-Snippet unten erkennst. Die Version – in diesem Fall ist es 5.0.4 – ist hierbei austauschbar.


> wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_5.0.4_amd64.deb

> apt-get install -y adduser libfontconfig

> dpkg -i grafana_5.0.4_amd64.deb

Daraufhin ist es notwendig, dass die im folgenden Code-Block eingeblendeten Kommandos durchführst, sodass Grafana startet. Hiermit stellst du dann auch sicher, dass Grafana nach dem Neustart automatisch starten wird.


> /bin/systemctl enable grafana-server

> /bin/systemctl start grafana-server

> /bin/systemctl daemon-reload

Als nächstes zeige ich dir, wie du Grafana konfigurierst. Hierzu rufst du in deinem Browser http://localhost:3000 auf, da Grafana unter dem Port 3000 verfügbar ist, wobei du localhost mit der IP-Adresse deines Servers austauscht.
Dadurch gelangst du – wie im Screenshot unten zu sehen – auf die Login-Seite von Grafana, über die du dir mittels default-Nutzerdaten Zugang zu der Monitoring-Plattform verschaffen kannst. Der default-Benutzername ist admin und auch das default-Passwort lautet admin.

Login-Seite von Grafana ohne Sign-Up-Button

Auf der Login-Seite wäre eigentlich auch der Button für die Registrierung zu finden. Damit er allerdings auch sicht- und nutzbar ist, müsste man in der Konfigurationsdatei von Grafana eine Anpassung vornehmen. Solltest du dich also unter einem neuen Nutzer registrieren wollen, müsstest du zunächst via dem unten eingeblendeten Kommando die Konfigurationsdatei von Grafana in einem Editor öffnen. In meinem Beispiel tue ich dies mit dem nano-Editor.


> nano /etc/grafana/grafana.ini

In der Konfigurationsdatei scrollst du dich dann bis zur [users]-Sequenz, wie im Screenshot unten demonstriert. Dort findest du im Abschnitt disable user signup / registration den Parameter allow_sign_up. Im Screenshot unten ist die betreffende Zeile gelb markiert. Zum einen musst du dessen Wert auf true setzen, wenn er per default auf false steht. Zudem musst du das Semikolon entfernen, dass sich vor dem Parameter befindet, da es dazu führt, dass die Zeile als Kommentar interpretiert wird.

Auszug aus der Konfigurationsdatei von Grafana

Mit Betätigung der Kombination aus den Tasten Strg und O leitest du das Speichern deiner Änderungen in der Konfigurationsdatei ein und bestätigst deren daraufhin in einem weißen Balken eingeblendeten Dateinamen mit der Enter-Taste. Anschließend verlässt du den nano-Editor via Betätigung der Kombination aus den Tasten Strg und X.
Um die Änderungen schließlich zu aktivieren, musst du Grafana via dem unten gezeigten Command neu starten.


> systemctl restart grafana-server

Über Ausführung des folgenden Kommandos kannst du dir den Status des Servers wiedergeben lassen, um sicherzustellen, dass alles geregelt läuft. Das Output liefert dir dann im positiven Fall einen Report darüber, dass Grafana aktiv ist.


> systemctl status grafana-server

Sobald du dann den Browser neu lädst, erkennst du den Sign Up-Button für die Registrierung.

Login-Seite von Grafana mit Sign-Up-Button

Sobald du eingeloggt bist, befindest du dich auf dem Home-Dashboard von Grafana, was dir der folgende Screenshot präsentiert. Mit Klick auf das verlinkte Icon Add data source, wirst du zu der Seite weitergeleitet, auf der du die erste Verbindung zu einer Datenbank herstellen und somit die kommunizierende Schnittstelle zwischen Grafana und einer Datenbank definieren kannst.

Home Dashboard von Grafana nach Installation

Wie du gut im Screenshot unten erkennst, kannst du auf der betreffenden Seite zum einen festlegen, zu welcher Datenbank die Verbindung gesetzt werden soll und welchem Kontext die Datenbank zuzuordnen ist.
Gemäß dem im Tutorial InfluxDB unter Ubuntu 16.04/18.04 installieren und einrichten eingeleiteten Anwendungsszenario heißt meine Datenbank in diesem Beispiel OnlineMarketDevelopment und ist vom Typ InfluxDB. Bei der Typzuweisung wird dir eine mögliche Auswahl an Typen, mit denen Grafana nutzbar ist, über eine Dropdown-Liste, bereitgestellt. Des Weiteren kannst du die HTTP Settings definieren. Im Feld für die URL trägst du die URL http://localhost:8086 ein, da der HTTP-Dienst von InfluxDB unter dem Port 8086 verfügbar ist, wobei du localhost mit der IP-Adresse deines Servers austauscht. Du hast zusätzlich über eine Dropdown-Liste die Möglichkeit deine HTTP-Settings als proxy oder direct zu bestimmen. Wenn deine Wahl auf proxy fällt, dann wird die Anfrage durch das Backend von Grafana vertreten. Solltest du dich hingegen für direct entscheiden, dann wird die URL direkt vom Browser verwendet. In meinem Beispiel entscheide ich ich mich den Zugang über die Option direct handzuhaben.

Verbindung zu einer Datenbank in Grafana einrichten

Zudem hast die Möglichkeit die Art und Weise für die HTTP-Authentifizierung via Checkmark-Boxen einzustellen.
Schließlich gibst du Informationen zur Schnittstelle, die die Kommunikation zwischen InfluxDB und Grafana herstellt, und letztlich kannst du dann noch die Höhe und die Einheit für die automatische Gruppierung nach Zeitintervall für die Datenerhebung festlegen, z.B. stünde 1s für ein Intervall von einer Sekunde, 10m für eines von zehn Minuten, 1h für eines von einer Stunde usw. Du bestätigst dann die Konfiguration mit Klick auf den grünen Button und dir wird bei erfolgreicher Einrichtung eine Meldung eingeblendet, die dir den Hinweis gibt, dass deine Datenbank mit Grafana arbeitet. Du kannst bereits existierende Datenbankenressoucen jederzeit editieren und/oder auch neue hinzufügen. Dies ist die auf der Configuration-Seite möglich. Der Screenshot unten verbildlicht dir, dass du diese Seite via dem vierten Menüpunkt in Grafana erreichst.

Configuration-Menüpunkt in Grafana mitsamt Unterpunkten

Der angeklickte Menüpunkt gibt dir via Fly-Out-Menü Aufschluss über die zu Inhalte, die die Configuration-Seite beinhaltet und die dann auch auf der Seite selbst im Nachhinein via Tabs aufrufbar sind, wie dir der Screenshot unten demonstriert.

Übersicht über verbundene Datenbank-Ressourcen in Grafana

Im Tab Data Sources sind dir die bestehenden Datenbankquellen aufgelistet. Durch Klick auf ein Item in dieser Liste, ist es dir möglich die Informationen, mit denen du das Item konfiguriert hast, zu ändern oder das Item gar zu löschen. Mit Klick auf + Add data source kannst du eine neue Datenbankquelle hinzufügen. Über den Tab Users kannst du Nutzer hinzufügen und über den Tab Teams kannst du Teams definieren. Im Tab Plugins wird dir eine Liste integrierbarer Plugins zur Verfügung gestellt, aus der du frei wählen kannst. Der Tab Preferences dient zur Modifizierung der Bezeichnung deines Profils, sowie von Einstellungen, die das Aussehen deiner Monitoring-Plattform (hell/dunkel), die Art deines Home-Dashboards sowie die Zeitzone betreffen. Im Tab API Keys werden dir schließlich alle deine existierenden API-Keys gelistet aufgeführt und hier kannst du dem Panel auch neue API-Keys hinzufügen.

InfluxDB mit Grafana nutzen

In Grafana werden Dashboards angeboten, um die via Queries aus bestimmten in InfluxDB enthaltenen Datenbanken ermittelten Informationen übersichtlich und wiederauffindbar darstellen zu lassen. Wie du im Screenshot unten siehst, kannst du über Fly-Out-Menü des Create-Menüpunktes in diverse Aktionen treten, um ein Dashboard oder einen Dashboard-Ordner anzulegen oder ein Dashboard zu importieren. Der Import eines Dashboards ist entweder über Copy&Paste dessen URL oder ID in ein hierfür vorgesehenes Feld möglich oder indem du den Inhalt dessen zugehöriges JSON in ein Editor-Feld überträgst oder indem du direkt eine JSON-Datei hochlädst und somit ein Dashboard generierst.

Create-Menüpunkt in Grafana mitsamt Unterpunkten

Nachdem ich gemäß dem im Tutorial InfluxDB unter Ubuntu 16.04/18.04 installieren und einrichten geschilderten Anwendungsszenario als Indexer die Messung SalesActivity in der Datenbank OnlineMarketDevelopment mit Datenpunkten befüllt habe, möchte ich diese in Grafana monitoren und werde hierzu beispielhaft ein Dashboard erstellen. Sobald ich den Untermenüpunkt Dashboard von Menüpunkt Create geklickt habe, lande ich auf der Seite, auf der man neue Dashboards generieren lassen kann. Der Screenshot unten führt dir die unterschiedlichen Arten der Visualisierung vor Auge, die zur Verfügung gestellt werden. Ich werde in diesem Beispiel den Graph als visuelles Medium meines Dashboards wählen.

Neues Dashboard in Grafana erstellen

Wie bereits in der Skizzierung des Anwendungsszenarios vermerkt, beziehen sich die von mir in die in InfluxDB enthaltene Datenbank OnlineMarketDevelopment implementierten Datenpunkte auf einen Zeitraum von 15 Minuten, genau genommen auf den Zeitraum von 13:00 bis 13:15 am 17.04.2018. Der rechten Spalte entnimmst du alle zur Simulation des Anwendunsszenarios durchgeführten INSERT-Operationen für die Messung SalesActivity. Zur Übersichtlichkeit für dich habe ich in der linken Spalte jeweils den dazugehörigen Zeitstempel dokumentiert.

Datum:

17.04.2018

Uhrzeit

via INSERT-Operation im Epoch-Format indexierte(r) Datenpunkt(e)

13:00

INSERT SalesActivity,region=“EMEA“,dc=“koeln“,gender=“male“ age=52i,buying=FALSE 1523962800

INSERT SalesActivity,region=“EMEA“,dc=“dortmund“,gender=“male“ age=25i,buying=TRUE 1523962800

INSERT SalesActivity,region=“EMEA“,dc=“herne“,gender=“female“ age=19i,buying=TRUE 1523962800

INSERT SalesActivity,region=“EMEA“,dc=“koeln“,gender=“male“ age=33i,buying=TRUE 1523962800

INSERT SalesActivity,region=“EMEA“,dc=“leverkusen“,gender=“female“ age=22i,buying=TRUE 1523962800

INSERT SalesActivity,region=“EMEA“,dc=“koeln“,gender=“female“ age=30i,buying=FALSE 1523962800

INSERT SalesActivity,region=“EMEA“,dc=“essen“,gender=“male“ age=39i,buying=TRUE 1523962800

INSERT SalesActivity,region=“EMEA“,dc=“koeln“,gender=“female“ age=18i,buying=TRUE 1523962800

INSERT SalesActivity,region=“EMEA“,dc=“essen“,gender=“male“ age=21i,buying=TRUE 1523962800

INSERT SalesActivity,region=“EMEA“,dc=“wuppertal“,gender=“female“ age=45i,buying=TRUE 1523962800

INSERT SalesActivity,region=“EMEA“,dc=“borken“,gender=“female“ age=23i,buying=TRUE 1523962800

INSERT SalesActivity,region=“EMEA“,dc=“koeln“,gender=“female“ age=50i,buying=FALSE 1523962800

INSERT SalesActivity,region=“EMEA“,dc=“niederkassel“,gender=“female“ age=28i,buying=FALSE 1523962800

INSERT SalesActivity,region=“EMEA“,dc=“leverkusen“,gender=“male“ age=37i,buying=TRUE 1523962800

13:02

INSERT SalesActivity,region=“EMEA“,dc=“oberhausen“,gender=“female“ age=31i,buying=TRUE 1523962920

INSERT SalesActivity,region=“EMEA“,dc=“herne“,gender=“male“ age=27i,buying=TRUE 1523962920

INSERT SalesActivity,region=“EMEA“,dc=“koeln“,gender=“male“ age=53i,buying=FALSE 1523962920

INSERT SalesActivity,region=“EMEA“,dc=“aachen“,gender=“male“ age=25i,buying=TRUE 1523962920

INSERT SalesActivity,region=“EMEA“,dc=“koeln“,gender=“female“ age=28i,buying=TRUE 1523962920

INSERT SalesActivity,region=“EMEA“,dc=“duesseldorf“,gender=“male“ age=26i,buying=TRUE 1523962920

13:03

INSERT SalesActivity,region=“EMEA“,dc=“duesseldorf“,gender=“female“ age=42i,buying=FALSE 1523962980

INSERT SalesActivity,region=“EMEA“,dc=“essen“,gender=“female“ age=26i,buying=FALSE 1523962980

INSERT SalesActivity,region=“EMEA“,dc=“bottrop“,gender=“male“ age=53i,buying=FALSE 1523962980

INSERT SalesActivity,region=“EMEA“,dc=“koeln“,gender=“male“ age=21i,buying=FALSE 1523962980

13:07

INSERT SalesActivity,region=“EMEA“,dc=“dormagen“,gender=“male“ age=18i,buying=TRUE 1523963220

INSERT SalesActivity,region=“EMEA“,dc=“bocholt“,gender=“male“ age=24i,buying=TRUE 1523963220

13:08

INSERT SalesActivity,region=“EMEA“,dc=“koeln“,gender=“male“ age=40i,buying=FALSE 1523963280

INSERT SalesActivity,region=“EMEA“,dc=“essen“,gender=“male“ age=56i,buying=FALSE 1523963280

INSERT SalesActivity,region=“EMEA“,dc=“frechen“,gender=“female“ age=47i,buying=FALSE 1523963280

INSERT SalesActivity,region=“EMEA“,dc=“aachen“,gender=“male“ age=39i,buying=FALSE 1523963280

INSERT SalesActivity,region=“EMEA“,dc=“leverkusen“,gender=“female“ age=51i,buying=FALSE 1523963280

INSERT SalesActivity,region=“EMEA“,dc=“bonn“,gender=“female“ age=31i,buying=TRUE 1523963280

13:11

INSERT SalesActivity,region=“EMEA“,dc=“herne“,gender=“male“ age=20i,buying=TRUE 1523963460

INSERT SalesActivity,region=“EMEA“,dc=“koenigswinter“,gender=“female“ age=25i,buying=TRUE 1523963460

INSERT SalesActivity,region=“EMEA“,dc=“dortmund“,gender=“male“ age=33i,buying=TRUE 1523963460

INSERT SalesActivity,region=“EMEA“,dc=“koeln“,gender=“male“ age=30i,buying=TRUE 1523963460

INSERT SalesActivity,region=“EMEA“,dc=“duisburg“,gender=“male“ age=29i,buying=TRUE 1523963460

13:13

INSERT SalesActivity,region=“EMEA“,dc=“aachen“,gender=“female“ age=28i,buying=TRUE 1523963580

INSERT SalesActivity,region=“EMEA“,dc=“bornheim“,gender=“female“ age=21i,buying=TRUE 152396358

INSERT SalesActivity,region=“EMEA“,dc=“koeln“,gender=“male“ age=35i,buying=TRUE 1523963580

13:14

INSERT SalesActivity,region=“EMEA“,dc=“essen“,gender=“male“ age=60i,buying=FALSE 1523963460

INSERT SalesActivity,region=“EMEA“,dc=“bonn“,gender=“male“ age=53i,buying=FALSE 1523963640

INSERT SalesActivity,region=“EMEA“,dc=“duisburg“,gender=“female“ age=57i,buying=FALSE 1523963640

INSERT SalesActivity,region=“EMEA“,dc=“leverkusen“,gender=“female“ age=44i,buying=FALSE 1523963640

INSERT SalesActivity,region=“EMEA“,dc=“essen“,gender=“female“ age=48i,buying=FALSE 1523963640

INSERT SalesActivity,region=“EMEA“,dc=“koeln“,gender=“male“ age=41i,buying=FALSE 1523963640

INSERT SalesActivity,region=“EMEA“,dc=“wuppertal“,gender=“male“ age=48i,buying=FALSE 1523963640

INSERT SalesActivity,region=“EMEA“,dc=“herne“,gender=“female“ age=55i,buying=FALSE 1523963640

INSERT SalesActivity,region=“EMEA“,dc=“wuppertal“,gender=“female“ age=18i,buying=TRUE 1523963640

INSERT SalesActivity,region=“EMEA“,dc=“herne“,gender=“male“ age=27i,buying=TRUE 1523963640

13:15

INSERT SalesActivity,region=“EMEA“,dc=“dinslaken“,gender=“female“ age=26i,buying=TRUE 1523963700

INSERT SalesActivity,region=“EMEA“,dc=“koeln“,gender=“female“ age=23i,buying=TRUE 1523963700

INSERT SalesActivity,region=“EMEA“,dc=“duisburg“,gender=“female“ age=19i,buying=TRUE 1523963700

INSERT SalesActivity,region=“EMEA“,dc=“bad_honnef“,gender=“female“ age=51i,buying=FALSE 1523963700

INSERT SalesActivity,region=“EMEA“,dc=“bonn“,gender=“male“ age=19i,buying=FALSE 1523963700

INSERT SalesActivity,region=“EMEA“,dc=“oberhausen“,gender=“male“ age=34i,buying=TRUE 1523963700

INSERT SalesActivity,region=“EMEA“,dc=“aachen“,gender=“female“ age=38i,buying=TRUE 1523963700

INSERT SalesActivity,region=“EMEA“,dc=“herne“,gender=“male“ age=21i,buying=TRUE 152396370

INSERT SalesActivity,region=“EMEA“,dc=“niederkasse“l,gender=“male“ age=28i,buying=TRUE 1523963700

INSERT SalesActivity,region=“EMEA“,dc=“leverkusen“,gender=“male“ age=32i,buying=TRUE 1523963700

INSERT SalesActivity,region=“EMEA“,dc=“koeln“,gender=“female“ age=36i,buying=TRUE 1523963700

INSERT SalesActivity,region=“EMEA“,dc=“oberhausen“,gender=“male“ age=46i,buying=FALSE 1523963700

INSERT SalesActivity,region=“EMEA“,dc=“wuppertal“,gender=“female“ age=31i,buying=TRUE 1523963700

INSERT SalesActivity,region=“EMEA“,dc=“duesseldorf“,gender=“male“ age=25i,buying=TRUE 1523963700

INSERT SalesActivity,region=“EMEA“,dc=“leverkusen“,gender=“male“ age=21i,buying=TRUE 1523963700

INSERT SalesActivity,region=“EMEA“,dc=“bochum“,gender=“male“ age=27i,buying=TRUE 1523963700

INSERT SalesActivity,region=“EMEA“,dc=“essen“,gender=“female“ age=33i,buying=TRUE 1523963700

INSERT SalesActivity,region=“EMEA“,dc=“koeln“,gender=“female“ age=40i,buying=TRUE 1523963700

INSERT SalesActivity,region=“EMEA“,dc=“duisburg“,gender=“male“ age=18i,buying=TRUE 1523963700

INSERT SalesActivity,region=“EMEA“,dc=“schwerte“,gender=“male“ age=68i,buying=FALSE 1523963700

INSERT SalesActivity,region=“EMEA“,dc=“herne“,gender=“female“ age=39i,buying=FALSE 1523963700

INSERT SalesActivity,region=“EMEA“,dc=“dormagen“,gender=“male“ age=20i,buying=FALSE 1523963700

Nachdem ich den im Screenshot oben ersichtlichen Graph-Button geklickt habe, wird ein zunächst noch leeres Graph-Dashboard generiert. Im Screenshot unten zeige ich dir, dass per Klick auf den Titel des Dashboards ein Fly-Out-Menü erscheint, dass dir unterschiedliche Optionen bietet, um mit dem Dashboard zu interagieren. Um es mit Informationen zu füllen, musst du Edit klicken. Im unten eingeblendeten Screenshot befinde ich mich gerade in der Edit-Option. Neben dem Editieren, kannst du dir das Dashboard über Klick auf View einfach nur ansehen, bzw. in den View-Modus wechseln. Mittels Klick auf Share kannst du das Dashboard teilen. Über den weiterführenden Menüpunkt More werden dir dann noch Möglichkeiten zum Export des Dashboards in das Format CSV oder der Übertragung des Dashboards in das Format JSON angeboten.

Neu erstelltes leeres Dashboard in Grafana

In der im Tab Metrics befindlichen Dropdown-Liste von Data Source kann ich die Datenbank wählen, aus der ich Informationen monitoren möchte. Mit Klick auf den darunter befindlichen Add Query-Button wird schließlich eine Schaltfläche zum generieren einer Query eingeblendet, wie dir der Screenshot unten demonstriert.

Grafana-Dashboard im Edit-Modus mit Schaltflächen

Über darin enthaltene Buttons kann ich die Parameter meiner Query festlegen und muss diese nicht in einen Editor schreiben.
In meinem Beispiel bevorzuge ich es aber die Anfrage selber zu schreiben. Hierzu klicke ich den Toggle Edit Mode-Button ganz rechts neben der Schaltfläche. In den daraufhin eingeblendeten Editor habe ich nun meine Query eingetragen, was gut im Screenshot unten zu erkennen ist. Du entnimmst aus der Query, dass ich den Zeitraum der Datenpunkte, die ich erhoben habe und plotten lassen möchte, nicht mittels der WHERE-Bedingung definiert, sondern lediglich den Intervall auf eine Stunde via dem GROUP BY-Statement festgelegt habe. Trotzdem ist das Zeitfenster definiert, nämlich – wie du der rechten oberen Hälfte des Screenshots entnimmst – über die Quick ranges-Auswahl aus dem Panel, dass via Klick auf den darüber liegenden Button eingeblendet wurde. Alternativ dazu kannst du auch die auf der linken Seite des Panels befindliche Schaltfläche nutzen, um ein individuelles Zeitfenster zu spezifizieren. Ich habe mich entschieden die unter Quick ranges angebotene Previous week als Zeitrahmen zu wählen, da es sich gut für das 1-stündige Intervall anbietet. Unterhalb des geplotteten Graphen siehst du die dazugehörige Legende. Diese kann im Tab Legend via Checkmark-Box generiert werden und dort hast du auch die Möglichkeit, zu bestimmen, ob Werte wie z.B. Minimum, Maximum oder Durchschnitt unterhalb des Graphen abgebildet werden sollen. Wenn du auf die Legende unterhalb des Graphen klickst, wird dir eine Farbpalette eingeblendet, aus der du dann eine vorgeschlagene Farbe für den Graphen auswählen oder nach Bedarf sogar selber eine Farbe definieren kannst.

Modifizierung einer Query in Grafana im Editor im Edit-Modus via Quick ranges Item "Previous-week"

Durch erneutes Klicken auf den Button über dem Panel wird es wieder ausgeblendet und der hierüber definierte Zeitrahmen bleibt solange aktiv bis er entweder in der Query im Editor überschrieben wird oder im Panel selbst neu gestaltet wird. Mittels dem $timeFilter-Parameter kannst du das Zeitfenster in der Query auch selber definieren, wie ich dir im folgenden Code-Snippet unten vorführe. Für die korrekte Syntax des hinter dem Parameter stehenden Wertes kannst du dich am eben erwähnten Panel orientieren. Wenn man dort nämlich ein Item aus den Quick ranges anklickt, wird in den Eingabefeldern auf der linken Seite des Panels die analog hierzu lautende Syntax generiert. Demnach würde der Wert now-1w/w den Zeitrahmen der vorherigen Woche wiedergeben.


SELECT COUNT("buying") AS "counts_buying_+_no_buying" FROM "OnlineMarketDevelopment"."autogen"."SalesActivity" WHERE "buying" = TRUE AND $timeFilter = now-1w/w GROUP BY time(1h)

Der Screenshot unten wiederum zeigt einen Ausschnitt meiner Arbeit im erzeugten Graph-Dashboard, wo ich das Zeitfenster der geplotteten Datenpunkte individuell über die auf der linken Seite des eingeblendeten Panels zur Verfügung gestellten Schaltfläche festgesetzt habe. Analog meiner Datenerhebung, habe ich den Zeitrahmen für den 17.04.2018 definiert, beginnend mit 13:00 und endend mit 13:15. Hierbei habe ich das über GROUP BY Intervall in der Query auf eine Minute gesetzt.

Modifizierung einer Query in Grafana im Editor im Edit-Modus via definiertem Custom range

Im Code-Block unten ist dieselbe Query, wie du sie auch oben im Screenshot findest, zum Nachvollziehen enthalten.


SELECT COUNT("buying") AS "counts_buying_+_no_buying" FROM "OnlineMarketDevelopment"."autogen"."SalesActivity" GROUP BY time(1h)

Unten im Screenshot präsentiere ich dir, wie du das Design eines Graphen im Tab Design managen kannst. Hier hast du u.a. die Möglichkeit dir den Graph entweder als Linien- oder Bar-Graph darstellen zu lassen, eine Markierung der Datenpunkte einzubinden, die Linienstärke des Graphen zu bestimmen, sowie festzulegen, ob der Graph transparent oder in einem bestimmten Grad farblich gefüllt sein soll.

Design von Dashboard-Graphen in Grafana im Display-Tab definieren

Grafana ist eine fortschrittliche Monitoring-Plattform, es lassen sich mehrere Queries gleichzeitig plotten. Um dir dies zu demonstrieren, werde ich im Tab Metrics über den Button Add Query jeweils drei neue Editor-Felder generieren, in die ich jeweils eines der Queries einbinde, die sich in den folgenden drei Code-Snippets befinden.


SELECT COUNT("buying") AS "counts_buying" FROM "OnlineMarketDevelopment"."autogen"."SalesActivity" WHERE "buying" = TRUE GROUP BY time(1m)

SELECT COUNT("buying") AS "counts_buying | age 

SELECT COUNT("buying") AS "counts_buying | age > 35" FROM "OnlineMarketDevelopment"."autogen"."SalesActivity" WHERE "buying" = TRUE AND "age" > 35 GROUP BY time(1m)

Der Screenshot unten demonstriert dir das Endergebnis meines im Kontext der vier Queries durchgeführten Monitorings. Der Graph der ersten Query gibt das Total aller Aktivitäten der Besucher des Online-Shops pro Datenpunkt wieder, worunter sowohl die Besucher zählen, die einen Einkauf getätigt haben, als auch solche, die den Online Shop lediglich durchstöbert haben. Der Graph der zweiten Query wiederum plottet lediglich die Anzahl an getätigten Einkäufen. Mittels der dritten und vierten Query wird ebenfalls die Anzahl an Einkäufen geplottet, jedoch jeweils in Abhängigkeit eines in der betreffenden Query via WHERE-Bedingung angefragten Altersgruppe.

Im Graph-Dashboard von Grafana mehrere Queries nebenher plotten lassen

Mouseover-Effekt in Graph-Dashboard von Grafana

Wenn du mit dem Mauszeiger über die Datenpunkte der geplotteten Graphen fährst, wird dir hierzu als MouseOver-Effekt eine kleine Datenübersicht eingeblendet, wie dir der Screenshot oben zeigt.
Mit Klick auf das Speichern-Icon oben links in der Werkzeugleiste kannst du das erstellte Dashboard-Item zunächst speichern und im Nachhinein jederzeit darauf zugreifen, um es zu editieren oder zu löschen. Im daraufhin erscheinenden Speichern-Interface wirst du nach dem Namen des Dashboards gefragt und musst entweder via DropDown-Liste einen bereits existierenden Dashboard-Ordner wählen oder einen neuen anlegen. Nachdem das Speichern abgeschlossen ist, befindet sich das Dashboard-Item im Dashboard, was der Screenshot unten verbildlicht. Mittels dem ersten Button oben links in der Werkzeugleiste ist es dir möglich dem Dashboard neue Items hinzuzufügen. Via Zahnrad-Icon gelangst du zu den Einstellungen des Dashboard-Items.

Dashboard-Item in Dashboard von Grafana

Für Graph(en) in einem Dashboard-Item ist es möglich eine Benachrichtigungsregel zu formulieren. Ich zeige dir am Beispiel des oben im Screenshot ersichtlichen Dashboard-Items, wie dies funktioniert. Zunächst musst du hierfür wieder in den Edit-Modus des betreffenden Dashboard-Items wechseln, indem du den Titel anklickst und in dem daraufhin eingeblendeten Fly-Out-Menü Edit auswählst.
Wenn du dich dann in der Tab-Leiste unterhalb der geplotteten Graphen in den Tab Alert navigierst, siehst du direkt darunter auf der linken Seite den Button Create Alert. Nachdem du den Button betätigt hast, wird eine Schaltfläche generiert, über die du eine Benachrichtigungsregel mit einer oder mehreren Bedingungen für den/die geplotteten Graphen erstellen kannst. Im Screenshot unten erkennst du, dass du zunächst den Namen für die Konfiguration der Benachrichtigungsregel eintragen sowie den Intervall der Evaluation festlegen kannst. Darunter hast du dann die Möglichkeit über die zur Verfügung gestellten Schaltflächen die Bedingungen für Benachrichtigungen zu definieren.

Benachrichtigungregel für Graph-Dashboard in Grafana einrichten

Wenn du in das Feld klickst, dass nach dem Schlüsselwort WHEN folgt, kannst du aus einer DropDown-Liste eine Aggregationsfunktion wählen. Z.B. lässt sich mit Aggregationsfunktion avg() steuern, wie die Werte für jede Serie auf einen Wert reduziert werden sollen, der mit dem Schwellenwert verglichen werden kann.
Im nächsten Feld wird definiert, welche Abfrage auf den Metrics-Tab ausgeführt werden soll. Hierbei hast du die Option alle in der query-Klammerung stehenden Parameter anzupassen. Bei Klick auf jeden der drei Parameter aktivierst du eine DropDown-Liste aus vorgeschlagenen Werten. Der erste Parameter nimmt Bezug auf die betreffende Query aus der im Metrics-Tab einer der Graphen geplottet wird. Mit den folgenden beiden Parametern lässt sich der Zeitbereich fixieren. 5m als Wert für den zweite und now() als Wert für den dritten Parameter würde den Zeitrahmen vor 5 Minuten bis jetzt festlegen. Im Anschluss daran wird der Schwellenwert bestimmt. Im hierfür vorgesehenen Eingabefeld kannst du einen Schwellenwert eintragen. Via der vor dem Schwellenwert befindlichen Schaltfläche wird der Typ des Schwellenwerts zugeordnet, indem auf die Schaltfläche geklickt und in der dadurch generierten DropDown-Liste ein vorgeschlagener Typ gewählt wird. Unter der erstellten Bedingung befindet sich ein +-Icon, mit dem du beliebig viele neue Schaltflächen für Bedingungen generieren kannst. Im folgenden Screenshot habe ich für jeden der vier via Query im Metrics-Tab geplotteten Graphen eine Bedingung gesetzt,nämlich für Query A, B, C und D. Für jeden der vier Queries ist das Zeitfenster auf 10 Minuten definiert und die Benachrichtigung soll für jeden der Queries jeweils dann passieren, wenn der Schwellenwert über dem Wert 10 liegt. In Relation habe ich diese vier Benachrichtigungsregeln gesetzt via dem booleschen OR-Operator. Mit Klick auf die Schaltfläche ist es möglich den OR-Operator in einen AND-Operator zu wandeln, je nachdem wie die Logik Sinn macht. Es wäre auch möglich zu ein und derselben Query – z.B. Query A – mehr als eine Bedingung zu erzeugen.

Mehrere Benachrichtigungsregeln für Graph-Dashboard in Grafana

Parallel zum Erstellen von Benachrichtigungsregeln ist es möglich Benachrichtigungskanäle einzurichten. Hierzu navigierst du dich über das Fly-Out-Menü des Alerting-Menüpunktes im links befindlichen Grafana-Menü zum Punkt Notification Channels. Dann kannst du über den daraufhin eingeblendeten Add channel-Button ein neues Channel-Item generieren.
Der Screenshot unten präsentiert das Interface, in dem du den Benachrichtigungskanal einrichten und jederzeit auch im Nachhinein editieren kannst.

Item für Benachrichtigungskanal in Grafana editieren

Unter anderem kannst du dort den Typ des Benachrichtigungskanals bestimmen, indem du im Typ-Feld die DropDown-Liste aktivierst und einen aller möglichen Event-Handler wählst. Dieser wird definiert, damit Grafana Benachrichtigungen an den von dir gewählten Event-Handler senden und dich up to date halten kann. Besonders hilfreich kann die Nutzung dieses Dienstes sein, um Warnmeldungen an bestimmte E-Mails sowie an Anwendungen wie Slack oder HipChat zu senden oder an eine Liste von E-Mailadressen. Voraussetzung ist, dass du selbst oder der User, für den du diesen Benachrichtigungskanal einrichtest, bei solch einer Anwendung registriert bist. Für unterschiedliche Event-Handler können unterschiedliche und spezifische Daten erforderlich sein, um die Verbindung herzustellen. Diese Daten werden in der zweiten Hälfte unten im Interface eingetragen. Bestimmte erforderliche Daten sind von der betreffenden Anwendung einzuholen, z.B. wenn es sich um einen Token, eine URL oder Ähnliches handelt.

Fazit

Du hast Grafana als fortgeschrittene Monitoring-Plattform kennen gelernt und im besten Fall bist du neugierig geworden deine Projekte hiermit umzusetzen. Ich wünsche dir viel Erfolg und vor allem Freude bei der Arbeit mit Grafana.

Zurück zur Tutorial Übersicht Back to Tutorial Overview

© 2002-2023 Phox inc. all rights reserved.

© 2002-2023 Phox inc. all rights reserved.