Elasticsearch und Kibana stellen umfassende, sofort einsatzbereite Tools bereit, mit denen Benutzer:innen ihre Daten aussagekräftig visualisieren können, ohne dass tiefgreifende Kenntnisse des ELK-Stacks erforderlich sind. Es können jedoch Probleme aufkommen, bei denen die verfügbaren Optionen nicht ausreichen und Sie ein wenig kreativ werden müssen, um das vorliegende Problem zu lösen.
Visualisierungen von Bestellungen in Kibana nach Zeit
Kürzlich bat uns ein Kunde, eine Kibana-Visualisierung einzurichten, in der die Anzahl der Bestellungen angezeigt werden sollte. Die Visualisierung sollte flexibel pro Tag, pro Woche, pro Monat und pro Jahr funktionieren. Nach dem Einrichten der separaten Visualisierung sah das Diagramm für die wöchentliche Aggregation in etwa so aus:
Wie Sie auf der x-Achse sehen können, wird das Datum im Format „JJJJ-MM-TT“ angezeigt, wenn das Datumshistogramm auf „Wöchentlich“ eingestellt ist. Das Gleiche gilt für „Täglich“ und „Monatlich“. Wenn wir das Datumshistogramm auf „Jährlich“ umstellen, zeigt Kibana auf der x-Achse nur das Jahr (JJJJ) an.
Umbenennen der Datenfelder (Fields) in Kibana
Der Kunde fand die Anzeige für „Wöchentlich“ und „Monatlich“ nicht intuitiv und fragte an, ob für „Wöchentlich“ die Kalenderwochennummer (z. B. „KW 12“) und für „Monatlich“ den Namen des Monats anzeigen können. Für „Monatlich“ war es ziemlich einfach. Man muss den folgenden Eintrag zum „Scaled date Format“ in den erweiterten Einstellungen im Stack Management von Kibana hinzufügen:
[„P1MT“, „MMM“]
Das Diagramm für „Monatlich“ sieht dann so aus:
Für „Wöchentlich“ ist dies jedoch nicht möglich. Hier eilen Runtime/Scripted Fields zur Rettung! Da der Kunde eine ältere Version des Elastic Stack (7.8) verwendete und Runtime Fields erst in 7.11 veröffentlicht wurden, mussten wir zur Lösung dieser Herausforderung Scripted Fields verwenden (Runtime Fields werden bevorzugt, da sie leistungsfähiger sind). Nach dem Öffnen des Index Pattern in Kibana sehen Sie die Registerkarte „Scripted Fields“. Beim Hinzufügen eines neuen Scripted Fields wählen wir den Namen dieses Felds als „weekOfYear“ und den Typ als „string“. Wir hinterlegen das folgende Painless Script:
'KW ' + (doc['@timestamp'].value.dayOfYear - doc['@timestamp'].value.dayOfWeek + 10) / 7;
Dadurch wird ein Feld erstellt, das nicht im Dokument gespeichert, sondern zur Laufzeit berechnet wird. Dies kann dann in Kibana Visualisierungen verwendet werden. Da es sich hierbei um ein Textfeld handelt, verwenden wir statt des Datumshistogramms für die x-Achse eine Term-Aggregation auf dem Feld „weekOfYear“. So entsteht das folgende Diagramm:
Bei Bedarf können wir jetzt auch das Jahr mit dieser Wochennummer verketten. Aber im Moment entspricht dies unseren Anforderungen.
Praktische Visualisierungstools von Elasticsearch
Elasticsearch bietet umfangreiche Tools zum Erstellen aller Arten von Visualisierungen basierend auf den Daten. Skript-Tools wie Scripted Fields und Runtime Fields sind eine Möglichkeit, Ihre Daten nach Ihren Wünschen anzupassen und umzuwandeln. Wie bereits erwähnt, werden Scripted Fields zur Laufzeit berechnet. Sie können daher bei großen Datenmengen rechenintensiv sein und sollten mit Vorsicht verwendet werden. Runtime Fields sind robuster und werden deshalb für solche Lösungen bevorzugt.