Die Such- und Analytik-Engine Ela­s­tic­se­arch zählt zu den besten Open-Source-Lösungen zur In­de­xie­rung und Struk­tu­rie­rung großer Da­ten­be­stän­de. Wertvolle Er­kennt­nis­se lassen sich bei der späteren Analyse der Rohdaten al­ler­dings oft erst dann gewinnen, wenn diese in über­sicht­li­cher und leicht ver­ständ­li­cher Form vi­sua­li­siert werden. Speziell für die Dar­stel­lung von Ela­s­tic­se­arch-Daten ist das Vi­sua­li­sie­rungs-Tool Kibana ent­wi­ckelt worden, um dessen Nutzung es in diesem Tutorial gehen wird.

Was ist Kibana?

Kibana ist eine er­wei­ter­ba­re Web-Ober­flä­che zur visuellen Dar­stel­lung erhobener Daten. Gemeinsam mit Ela­s­tic­se­arch und dem Da­ten­ver­ar­bei­tungs­tool Logstash bildet sie den so­ge­nann­ten ELK-Stack (auch Elastic Stack genannt). Diese Open-Source-Suite er­mög­licht Nutzern, Daten aus un­ter­schied­li­chen Server-Quellen (und in jeglichen Formaten) zu erfassen, zu ordnen und für ana­ly­ti­sche Zwecke auf­zu­be­rei­ten. Zu­sätz­lich zur Funktion, die durch Logstash und Ela­s­tic­se­arch ver­ar­bei­te­ten Daten vi­sua­li­sie­ren zu können, bietet Kibana auch eine au­to­ma­ti­sche Echt­zeit­ana­ly­se, einen sehr flexiblen Such­al­go­rith­mus sowie ver­schie­de­ne An­sichts­ty­pen (His­to­gram­me, Graphen, Kreis­dia­gram­me etc.) für die einzelnen Daten. Im Dashboard lassen sich die einzelnen in­ter­ak­ti­ven Vi­sua­li­sie­run­gen dann zu einem dy­na­mi­schen Ge­samt­bild zu­sam­men­fü­gen, das sich filtern und durch­su­chen lässt.

Als web­ba­sier­te, in Ja­va­Script ge­schrie­be­ne Anwendung ist Kibana platt­form­über­grei­fend nutzbar. Kosten entstehen dabei lediglich, wenn Sie den vom Ent­wick­ler an­ge­bo­te­nen Hosting-Service Elastic Cloud in Anspruch nehmen. Dieser kos­ten­pflich­ti­ge Dienst er­mög­licht Ihnen, einen sicheren Ela­s­tic­se­arch-Kibana-Cluster auf Amazon oder Google zu im­ple­men­tie­ren und zu or­ga­ni­sie­ren, ohne dass Sie dafür eigene Res­sour­cen be­reit­stel­len müssen.

Kibana-Tutorial: Ersten Schritte mit dem Vi­sua­li­sie­rungs-Tool

Kibana bietet eine riesige Funk­ti­ons­pa­let­te, mit deren Hilfe sich auf­be­rei­te­te Da­ten­bank­be­stän­de dar­stel­len lassen. Bevor Sie die In­for­ma­tio­nen im Dashboard al­ler­dings so filtern und visuell dar­stel­len können, dass sich die ge­wünsch­ten Schlüs­sel­wer­te pro­blem­los über­bli­cken, ana­ly­sie­ren und lang­fris­tig auswerten lassen, liegt jedoch ein or­dent­li­ches Stück Arbeit vor Ihnen. Mit diesem Kibana-Tutorial wollen wir Ihnen den Einstieg in das leis­tungs­star­ke Web-Interface er­leich­tern. Dieser Artikel erklärt Ihnen daher, wie Sie Kibana korrekt in­stal­lie­ren, wie Sie ihr erstes eigenes Dashboard anlegen und wie Sie vor­han­de­ne Da­ten­be­stän­de in das Vi­sua­li­sie­rungs-Tool von Elastic einbinden können.

Schritt 1: So bringen Sie Kibana zum Laufen

Da Kibana für die Dar­stel­lung von Daten ent­wi­ckelt wurde, die mit Ela­s­tic­se­arch indexiert wurden, benötigen Sie zunächst eine laufende In­stal­la­ti­on der Such- und Analytik-Engine. Die ent­spre­chen­den Pakete für Windows, macOS und Linux finden Sie im Ela­s­tic­se­arch-Download-Center. Vor­aus­set­zung ist, dass eine aktuelle Java-Lauf­zeit­um­ge­bung (64-Bit) in­stal­liert ist.

Kibana selbst ist als platt­form­über­grei­fen­de Software ebenfalls für Windows, macOS und Linux (RPM, DEB) verfügbar. Da die Anwendung auf der Ja­va­Script-Lauf­zeit­um­ge­bung Node.js aufbaut, enthalten die ver­schie­de­nen In­stal­la­ti­ons­pa­ke­te auch die not­wen­di­gen Node.js-Bi­när­da­tei­en, die es zur Aus­füh­rung des Vi­sua­li­sie­rungs-Tools zu nutzen gilt – separat un­ter­hal­te­ne Versionen werden nämlich nicht un­ter­stützt. Die ver­schie­de­nen Pakete (ZIP-kom­pri­miert) finden Sie wie Ela­s­tic­se­arch auf der Elastic-Homepage.

Hinweis

Linux- und Mac-Nutzer können Kibana mithilfe der Paket-Manager apt und yum auch über das Elastic-Re­po­si­to­ry in­stal­lie­ren. De­tail­lier­te An­lei­tun­gen hierfür finden Sie in den Online-Manuals.

Haben Sie das Kibana-Paket entpackt, führen Sie die Datei bin/kibana (macOS, Linux) bzw. bin\kibana.bat (Windows) aus, um den Kibana-Server zum Laufen zu bringen.

An­schlie­ßend können Sie das Kibana-Backend über die Adresse "http://localhost:5601" in Ihrem Browser aufrufen (Ela­s­tic­se­arch muss hierfür bereits laufen).

Schritt 2: Kibana mit Daten füttern

Damit wir das Kibana-Dashboard und seine Funk­tio­nen in diesem Tutorial etwas genauer be­leuch­ten können, muss die Anwendung zunächst mit Daten versorgt werden. Auf der Elastic-Website gibt es drei kos­ten­frei her­un­ter­lad­ba­re Datenbank-Samples, die wir an dieser Stelle zu Test­zwe­cken verwenden. Es handelt sich dabei um die drei oben auf­ge­führ­ten Da­ten­ban­ken „shake­speare.json“ (Datenbank der kom­plet­ten Werke von William Shake­speare), „accounts.zip“ (Set fiktiver Konten) und „logs.jsonl.gz“ (Set zufällig ge­ne­rier­ter Log-Files).

Laden Sie die drei Dateien herunter und entpacken (Account- und Log-Datei) und speichern Sie diese dann am Ort Ihrer Wahl.

Bevor Sie die Daten ein­spei­sen, ist es er­for­der­lich, Mappings (Ab­bil­dun­gen) für die Felder der Shake­speare- und Server-Log-Datenbank zu erstellen. Diese Zu­ord­nun­gen un­ter­tei­len die Dokumente im Index in logische Gruppen und spe­zi­fi­zie­ren außerdem die Ei­gen­schaf­ten der Felder – wie zum Beispiel deren Such­bar­keit. Das passende Werkzeug zum Kon­fi­gu­rie­ren der Mappings ist die Konsole, die Sie im Kibana-Interface unter den Me­nü­punk­ten „Dev Tools“ à „Console“ finden.

Nun fügen Sie der Reihe nach die folgenden Mappings via PUT-Request ein:

PUT /shakespeare
{
 "mappings": {
  "doc": {
   "properties": {
    "speaker": {"type": "keyword"},
    "play_name": {"type": "keyword"},
    "line_id": {"type": "integer"},
    "speech_number": {"type": "integer"}
   }
  }
 }
}
PUT /logstash-2015.05.18
{
    "mappings": {
        "log": {
            "properties": {
                "geo": {
                    "properties": {
                        "coordinates": {
                            "type": "geo_point"
                        }
                    }
                }
            }
        }
    }
}
PUT /logstash-2015.05.19
{
    "mappings": {
        "log": {
            "properties": {
                "geo": {
                    "properties": {
                        "coordinates": {
                            "type": "geo_point"
                        }
                    }
                }
            }
        }
    }
}
PUT /logstash-2015.05.20
{
    "mappings": {
        "log": {
            "properties": {
                "geo": {
                    "properties": {
                        "coordinates": {
                            "type": "geo_point"
                        }
                    }
                }
            }
        }
    }
}

Nutzen Sie nun das Bulk-API von Ela­s­tic­se­arch, um die Da­ten­sät­ze per CURL über das Terminal zu laden. In Windows benutzen Sie statt­des­sen die Power­Shell mit der Invoke-Rest­Me­thod (Code-Beispiel unten):

curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary @accounts.json
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/shakespeare/doc/_bulk?pretty' --data-binary @shakespeare_6.0.json
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/_bulk?pretty' --data-binary @logs.jsonl
Invoke-RestMethod "http://localhost:9200/bank/account/_bulk?pretty" -Method Post -ContentType 'application/x-ndjson' -InFile "accounts.json"
Invoke-RestMethod "http://localhost:9200/shakespeare/doc/_bulk?pretty" -Method Post -ContentType 'application/x-ndjson' -InFile "shakespeare_6.0.json"
Invoke-RestMethod "http://localhost:9200/_bulk?pretty" -Method Post -ContentType 'application/x-ndjson' -InFile "logs.jsonl"
Hinweis

Je nach Re­chen­power kann die Ein­spei­sung der Da­ten­sät­ze einige Minuten in Anspruch nehmen.

Wechseln Sie zurück in die Kibana-Konsole, um den Erfolg des La­de­pro­zes­ses mit folgendem GET-Request zu ve­ri­fi­zie­ren:

GET /_cat/indices?v

Sind die Daten wie geplant ein­ge­bun­den, sieht der Output in etwa fol­gen­der­ma­ßen aus:

Schritt 3: Ein erstes In­dex­mus­ter de­fi­nie­ren

Damit Kibana nun erfährt, welche Daten es ver­ar­bei­ten soll, müssen Sie ent­spre­chen­de Muster für die Indices „shake­speare“, „bank“ und „logstash“ erstellen. Erst­ge­nann­te de­fi­nie­ren Sie fol­gen­der­ma­ßen:

  1. Öffnen Sie das Menü „Ma­nage­ment“ und klicken auf „Index Patterns“. Beim Anlegen des ersten In­dex­mus­ters öffnet sich nun au­to­ma­tisch die Seite „Create index pattern“. Al­ter­na­tiv können Sie diese über die gleich­na­mi­ge Schalt­flä­che aufrufen.
  2. Geben Sie „shakes*“ in das Feld „Index pattern“ ein und klicken dann auf „Next step“.
  3. Da für dieses Muster keine spezielle Kon­fi­gu­ra­ti­on benötigt wird, über­sprin­gen Sie den nächsten Ein­rich­tungs­schritt und schließen die Mus­ter­er­stel­lung direkt ab, indem Sie auf „Create index pattern“ klicken.

Wie­der­ho­len Sie die Schritte für das Muster „ba*“, das au­to­ma­tisch dem Index „bank“ zu­ge­ord­net wird.

Schließ­lich de­fi­nie­ren Sie auch ein In­dex­mus­ter mit dem Namen „logstash*“ für die drei Server-Log-Indices. Bei diesem Muster über­sprin­gen Sie das Kon­fi­gu­ra­ti­ons­me­nü al­ler­dings nicht, sondern wählen dort den Eintrag „@timestamp“ im Dropdown-Menü „Time Filter field name“ aus, da diese Da­ten­sät­ze Zeit­rei­hen­da­ten enthalten. An­schlie­ßend klicken Sie wie bei den beiden vor­he­ri­gen Mustern auf „Create index pattern“.

Schritt 4: Ein­ge­füg­te Da­ten­sät­ze durch­su­chen

Nachdem Sie Ihren Kibana-Server mit Da­ten­sät­zen gefüttert haben, können Sie nun eine Ela­s­tic­se­arch-Such­an­fra­ge starten, um diese Da­ten­sät­ze zu durch­su­chen und die Resultate zu filtern. Wechseln Sie hierfür in Kibana zum Menü „Discover“ und wählen über das kleine Dreieck-Symbol in der linken Me­nü­leis­te das In­dex­mus­ter für Ihre Suche aus. Im Rahmen dieses Kibana-Dashboard-Tutorials haben wir uns für den Konto-Datensatz (ba*) ent­schie­den:

Testweise können Sie den Bankkonto-Datensatz nun einmal filtern, um sich lediglich Konten anzeigen zu lassen, die bestimmte Kriterien erfüllen. Um bei­spiels­wei­se gezielt nach Konten zu suchen, die einen Kon­to­stand von über 47.500 aufweisen und Personen gehören, die über 38 Jahre alt sind, geben Sie folgenden Befehl in das Suchfeld ein:

balance:>47500 AND age:>38

Discover gibt Ihnen dann die Einträge der vier Konten 97, 177, 878 und 916 zurück, die den gewählten Ei­gen­schaf­ten ent­spre­chen.

Über die Schalt­flä­che „Save“ in der oberen Me­nü­leis­te speichern Sie die ge­fil­ter­ten Suchen unter dem ge­wünsch­ten Namen.

Schritt 5: Daten vi­sua­li­sie­ren

Mit den bisher in diesem Kibana-Tutorial ge­trof­fe­nen Vor­be­rei­tun­gen sind Sie nun in der Lage, die im­ple­men­tier­ten Daten zu vi­sua­li­sie­ren, um Ihrem Dashboard Leben ein­zu­hau­chen. Ex­em­pla­risch soll an dieser Stelle ein Tor­ten­dia­gramm für die Bank­kon­ten-Datenbank erzeugt werden. Dieses Diagramm soll ei­ner­seits anzeigen, welcher Anteil der insgesamt 1.000 Konten in bestimmte Kon­to­stand­be­rei­che fällt, an­de­rer­seits, wie die al­ters­spe­zi­fi­sche Ver­tei­lung innerhalb dieser Sparten ausfällt.

Öffnen Sie im ersten Schritt das Menü „Visualize“ und klicken Sie auf „Create a vi­sua­liza­ti­on“, um eine Auf­lis­tung der ver­füg­ba­ren Vi­sua­li­sie­rungs­ty­pen zu erhalten. Wählen Sie an­schlie­ßend die Option „Pie“.

Zu Beginn sehen Sie nun lediglich einen einfachen Kreis, der alle Einträge der Datenbank zu­sam­men­fasst, da noch keinerlei Ka­te­go­rien definiert wurden. Diese werden in Kibana auch als „Buckets“ be­zeich­net und können unter dem gleich­na­mi­gen Menüpunkt angelegt werden.

Um zunächst die einzelnen Kon­to­stand-Sparten zu de­fi­nie­ren, klicken Sie auf „Split Slices“ und wählen im Dropdown-Menü „Ag­gre­ga­ti­on“ den Punkt „Range“ aus:

Unter „Field“ suchen Sie nun nach dem Eintrag „balance“ und klicken auf diesen, bevor Sie an­schlie­ßend vier Mal auf den „Add Range“-Button klicken, um folgende sechs Kon­to­stand-Ka­te­go­rien de­fi­nie­ren zu können:

0 999
1000 2999
3000 6999
7000 14999
15000 30999
31000 50000

Klicken Sie an­schlie­ßend auf „Apply Changes“ (Dreieck-Symbol), woraufhin das Tor­ten­dia­gramm die Ver­tei­lung der Konten unter Be­rück­sich­ti­gung der de­fi­nier­ten Kon­to­stand-Sparten wie­der­gibt.

Im zweiten Schritt fügen Sie dem Diagramm einen weiteren Ring hinzu, der die Ver­tei­lung der Al­ters­klas­sen für die einzelnen Kon­to­stand-Bereiche vi­sua­li­siert. Hierfür klicken Sie auf „Add sub-buckets“, danach erneut auf „Split Slices“ und wählen dann im Dropdown-Menü „Terms“ aus. Suchen Sie unter „Field“ nach dem Eintrag „age“ und über­neh­men Sie die Än­de­run­gen via „Apply changes“.

Die Vi­sua­li­sie­rung speichern Sie nun ganz un­kom­pli­ziert über den sich in der oberen Me­nü­leis­te be­fin­den­den „Save“-Button ab.

Schritt 6: Dashboard or­ga­ni­sie­ren

Auch das Kibana-Dashboard soll in diesem Tutorial kurz be­leuch­tet werden, weshalb Sie nun mithilfe der in Schritt 4 und 5 ge­spei­cher­ten Suche bzw. Vi­sua­li­sie­rung ein erstes Test-Dashboard erstellen. Dazu wählen Sie das Dashboard in der Sei­ten­na­vi­ga­ti­on aus und klicken an­schlie­ßend erst auf „Create new dashboard“ und dann auf „Add“. Kibana listet Ihnen nun au­to­ma­tisch alle ge­spei­cher­ten Vi­sua­li­sie­run­gen bzw. Ela­s­tic­se­arch-Suchen auf:

Per Links­klick fügen Sie dem Dashboard die Kon­to­stand-Vi­sua­li­sie­rung und das Beispiel-Such­re­sul­tat hinzu, woraufhin Sie beide fortan in separaten Panels im Dashboard be­trach­ten können:

Die Panels können Sie nun mo­di­fi­zie­ren, indem Sie bei­spiels­wei­se die Größe anpassen oder die Po­si­tio­nie­rung verändern. Außerdem ist es möglich, sich eine Vi­sua­li­sie­rung bzw. ein Such­re­sul­tat auf dem kom­plet­ten Bild­schirm anzeigen zu lassen oder wieder aus dem Dashboard löschen. Via „Inspect“ können Sie bei vielen Vi­sua­li­sie­run­gen zudem zu­sätz­li­che In­for­ma­tio­nen über die zu­grun­de­lie­gen­den Daten und Anfragen anzeigen lassen.

Hinweis

Wenn Sie ein Panel aus dem Kibana-Dashboard entfernen, bleibt die ge­spei­cher­te Vi­sua­li­sie­rung bzw. Suche erhalten.

Zum Hauptmenü