{"id":1557,"date":"2022-12-06T20:00:15","date_gmt":"2022-12-06T19:00:15","guid":{"rendered":"https:\/\/informatik.htwk-leipzig.de\/seminar\/?p=1557"},"modified":"2023-01-25T11:50:57","modified_gmt":"2023-01-25T10:50:57","slug":"elk","status":"publish","type":"post","link":"https:\/\/informatik.htwk-leipzig.de\/seminar\/lehrveranstaltungen\/betriebliche-informationssysteme\/2022\/elk\/","title":{"rendered":"Elastic Stack"},"content":{"rendered":"<h2>Inhalte<\/h2>\n<ol>\n<li><a href=\"#motivation\">Motivation<\/a><\/li>\n<li><a href=\"#inbetriebnahme\">Inbetriebnahme<\/a><\/li>\n<li><a href=\"#beats\">Beats<\/a><\/li>\n<li><a href=\"#logstash\">Logstash<\/a><\/li>\n<li><a href=\"#elasticsearch\">Elasticsearch<\/a><\/li>\n<li><a href=\"#kibana\">Kibana<\/a><\/li>\n<li><a href=\"#prozessmodellierung\">Prozessmodellierung<\/a><\/li>\n<li><a href=\"#vorteile\">Vorteile<\/a><\/li>\n<li><a href=\"#nachteile\">Nachteile<\/a><\/li>\n<li><a href=\"#alternativen\">Alternativen<\/a><\/li>\n<li><a href=\"#fazit\">Fazit &amp; Ausblick<\/a><\/li>\n<li><a href=\"#referenzen\">Referenzen<\/a><\/li>\n<\/ol>\n<h2 id=\"motivation\">1. Motivation<\/h2>\n<p>F\u00fcr die Ausrichtung von Gesch\u00e4ftsprozessen sowie die Ressourcenverwaltung betrieblicher Informationssysteme ist die kontinuierliche Erfassung und Verarbeitung von Daten (Business Analytics, BA) im jeweiligen Kontext von gro\u00dfer Bedeutung. Interaktive Analysen (Business Intelligence, BI) erlauben eine Aufschl\u00fcsselung von Kennzahlen und dar\u00fcber einen Einblick in vorangegangene Ereignisse, deren Ursprung und die oftmals nicht auf den ersten Blick erkennbaren Auswirkungen. Ebenso wird eine Absch\u00e4tzung \u00fcber die Erfolgswahrscheinlichkeit spezifischer Szenarien m\u00f6glich, etwa durch Unterst\u00fctzung von Machine-Learning-Werkzeugen. Der Elastic Stack ist eine Kombination von Open-Source-Projekten zur Verwaltung, Analyse und Visualisierung von Eventdaten und wird im Rahmen von Business Analytics und Business Intelligence eingesetzt. In diesem Kontext bezeichnen Eventdaten jegliche durch den Elastic Stack erhobene und verwaltete Daten, z.B. Log- und Metrikdaten, API-Daten oder Datenbank-Exporte im CSV-Format. Der Elastic Stack wird mit Fokus auf folgende Projekte in diesem Beitrag betrachtet:<\/p>\n<ul>\n<li><strong>Beats<\/strong>: Erfassung, Verarbeitung und Weiterleitung g\u00e4ngiger Log- und Metrikdatenformate zu Logstash oder Elasticsearch.<\/li>\n<li><strong>Logstash<\/strong>: Datenverarbeitungspipeline zum Erfassen, Filtern und Weiterleiten von Eventdaten an Elasticsearch oder andere Dienste.<\/li>\n<li><strong>Elasticsearch<\/strong>: verteilte und horizontal skalierbare Such- und Analysemaschine zum Verwalten und Abfragen von Eventdaten.<\/li>\n<li><strong>Kibana<\/strong>: Visualisierung von Eventdaten aus Elasticsearch und Konfiguration der Komponenten den Elastic Stacks.<\/li>\n<\/ul>\n<p>Wie Elastic auf deren Website mittels erfolgreicher Anwendungsf\u00e4lle aufzeigt, k\u00f6nnen einzelne Projekte oder die Kombination derer z.B. wie folgt genutzt werden:<\/p>\n<p><strong>Enterprise-Search<\/strong>: Mit dieser kann ein Unternehmen alle internen Daten durchsuchen, darunter Dokumente, E-Mails und andere Dateien. Im konkreten Fall hat ein Warenhaus die Funktion verwendet, um R\u00fcckgaben der Kunden zu validieren und somit Betrug zu verhindern, aber auch, um die Unternehmenswahrnehmung beim Kunden durch schnellen und kompetenten Kundenservice zu verbessern.<\/p>\n<p><strong>Observability<\/strong>: Jede Sekunde werden bei Walmart etwa 156 Bananen verkauft. Das Sammeln von Informationen wie diesen wird durch eine Self-Service-Analyseplattform f\u00fcr die Datenwissenschaftler seitens des Elastic Stacks erm\u00f6glicht.\u00a0 So k\u00f6nnen neben der Anzahl verkaufter Bananen pro Sekunde auch relevante Informationen zu den Verkaufszahlen aller Produkte und deren Kaufumst\u00e4nde aufbereitet werden. Dies erm\u00f6glicht Szenarien wie die automatische Lieferung, um beispielsweise eine Warenknappheit vorzubeugen.<\/p>\n<p><strong>Security<\/strong>: Das rechtzeitige Aufdecken von Finanzbetrug ist ein zeitkritisches Unterfangen. Durch die Verwendung des Elastic Stacks konnte der Zeitverzug von 24 Stunden auf wenige Minuten reduziert und somit Sch\u00e4den abgewendet werden, bevor diese entstanden w\u00e4ren. Dies sparte einer Bank \u00fcber 18 Monate ungef\u00e4hr 35 Millionen Dollar.<\/p>\n<p>Dies sind nur ein paar Anwendungsf\u00e4lle des Elastic Stacks. Es wird jedoch deutlich, dass sich die Verwendung besonders in den drei genannten Bereichen f\u00fcr ein Unternehmen hinsichtlich BI und BA lohnen kann.<\/p>\n<h2 id=\"inbetriebnahme\">2. Inbetriebnahme<\/h2>\n<p>Innerhalb des Projekts wird der Elastic Stack durch Aufsetzen und Vernetzen mehrerer Docker-Container per Docker-Compose verwendet. F\u00fcr Elasticsearch, Kibana und Logstash werden die Ports 9200, 5601 und 5044 konfiguriert.<\/p>\n<pre><code>user@host:~$ git clone https:\/\/github.com\/deviantony\/docker-elk.git\r\nuser@host:~\/docker-elk$ docker-compose up<\/code><\/pre>\n<h2 id=\"beats\">3. Beats<\/h2>\n<p>Die Beats-Plattform bildet eine L\u00f6sung f\u00fcr die Erfassung und Verarbeitung g\u00e4ngiger Log- und Metrikdatenformate sowie deren \u00dcbermittlung an Logstash und Elasticsearch. Die als Beats oder Data-Shipper benannten Werkzeuge k\u00f6nnen direkt als Serveranwendung betrieben oder als Docker-Container aufgesetzt werden. Alle \u00fcbertragenen Daten erf\u00fcllen das Elastic-Common-Schema (ECS), d.h. eine Open-Source-Spezifikation zur Normalisierung von Events mit dem Ziel, Eventdaten durch Metadaten zu erg\u00e4nzen, um diese besser analysieren, vergleichen und visualisieren zu k\u00f6nnen. Daf\u00fcr werden spezifische Felder sowie deren Datentypen definiert, z.B. der Zeitstempel eines Events (@timestamp), die IP-Adresse des Servers (server.ip) oder der Hash des Nutzers (user.hash), der mit einem bestimmten Event assoziiert wird.<\/p>\n<p>Ausgehend vom Go-Framework libbeat besteht die M\u00f6glichkeit eigene Beats bzw. Data-Shipper zu entwickeln und auf spezifische Formate anzupassen. F\u00fcr g\u00e4ngige Szenarien stehen vordefinierte Beats bereit, deren Eingabedaten im Folgenden aufgegriffen werden:<\/p>\n<ul class=\"ul-list\" data-mark=\"-\">\n<li class=\"md-list-item md-focus-container\">\n<p class=\"md-end-block md-p md-focus\"><span class=\"md-plain md-expand\"><strong>Filebeat<\/strong>: Verarbeitung g\u00e4ngiger Logdatenformate aus z.B. AWS, Google Cloud oder Apache Kafka<\/span><\/p>\n<\/li>\n<li class=\"md-list-item\">\n<p class=\"md-end-block md-p\"><span class=\"md-plain\"><strong>Metricbeat<\/strong>: Aufzeichnung von Host-System-Daten, wie z.B. der CPU-, Speicher- oder Netzwerkauslastung <\/span><\/p>\n<\/li>\n<li class=\"md-list-item\">\n<p class=\"md-end-block md-p\"><span class=\"md-plain\"><strong>Packetbeat<\/strong>: Fokus auf Netzwerkdatenverkehr und Monitoring von z.B. Latenzen oder Reaktionszeiten bei der Nutzung von HTTP<\/span><\/p>\n<\/li>\n<li class=\"md-list-item\">\n<p class=\"md-end-block md-p\"><span class=\"md-plain\"><strong>Winlogbeat<\/strong>: Analyse von Ereignisprotokollen unter Windows und \u00dcberwachung von bspw. Anmeldevorg\u00e4ngen oder Anschluss externer Ger\u00e4te<\/span><\/p>\n<\/li>\n<li class=\"md-list-item\">\n<p class=\"md-end-block md-p\"><span class=\"md-plain\"><strong>Auditbeat<\/strong>: Monitoring von z.B. Prozessen und Nutzeraktivit\u00e4ten auf Basis des Linux-Audit-Frameworks <\/span><\/p>\n<\/li>\n<li class=\"md-list-item\">\n<p class=\"md-end-block md-p\"><span class=\"md-plain\"><strong>Heartbeat<\/strong>: \u00dcberpr\u00fcfung der Verf\u00fcgbarkeit von Diensten (Pingen) inkl. Auswertung der Reaktionszeiten<\/span><\/p>\n<\/li>\n<li class=\"md-list-item md-focus-container\">\n<p class=\"md-end-block md-p md-focus\"><span class=\"md-plain md-expand\"><strong>Functionbeat<\/strong>: Monitoring von Daten aus Cloud-Diensten, bspw. zur Ressourcennutzung<\/span><\/p>\n<\/li>\n<\/ul>\n<p>Durch den Einsatz von Spooling, d.h. einer Verwahrung von Log- und Metrikdaten auf einem persistenten Speichermedium, kann eine Fortsetzung der Daten\u00fcbermittlung nach z.B. einem Netzwerkausfall erreicht und somit der Verlust von Eventdaten minimiert werden. Au\u00dferdem sind Beats durch spezifische \u00dcberlastprotokolle in der Lage, die Lesegeschwindigkeit dynamisch anzupassen, falls etwa Logstash mehr Ressourcen f\u00fcr die Verarbeitung ben\u00f6tigt.<\/p>\n<h3>Beispiel<\/h3>\n<p>Die Kontrolle von Systemparametern wie der CPU-Auslastung spielt in Unternehmen hinsichtlich der Kosten- und Ressourcenkontrolle eine wichtige Rolle. Daher wird in diesem Beispiel das Auslesen dieser mit Hilfe von Metricbeat gezeigt. <span class=\"md-plain md-expand\">Sofern noch nicht geschehen, werden die ELK-Container gestartet, wobei durch Abruf von <\/span><span class=\"md-link md-pair-s\"><a href=\"http:\/\/localhost:9200\/\">http:\/\/localhost:9200<\/a><\/span><span class=\"md-plain\"> und <\/span><span class=\"md-link md-pair-s\"><a href=\"http:\/\/localhost:5601\/\">http:\/\/localhost:5601<\/a><\/span><span class=\"md-plain md-expand\"> im Browser der Status von Elasticsearch bzw. Kibana \u00fcberpr\u00fcft werden kann.<\/span><\/p>\n<pre><code>user@host:~\/docker-elk$ docker-compose up<\/code><\/pre>\n<p>Um die Komplexit\u00e4t des Beispiels niedrig zu halten, wird Metricbeat direkt auf dem Host-System ausgef\u00fchrt.<\/p>\n<pre><code>user@host:~$ curl -L -O https:\/\/artifacts.elastic.co\/downloads\/beats\/metricbeat\/metricbeat-8.5.2-linux-x86_64.tar.gz\r\nuser@host:~$ tar xzvf metricbeat-8.5.2-linux-x86_64.tar.gz<\/code><\/pre>\n<p><span class=\"md-plain md-expand\">Nach Herunterladen und Entpacken des Verzeichnisses m\u00fcssen in der Konfigurationsdatei <\/span><span class=\"md-pair-s\"><code>metricbeat.yml<\/code><\/span><span class=\"md-plain md-expand\"> Nutzername und Passwort f\u00fcr Elasticsearch erg\u00e4nzt werden, da die ELK-Container standardm\u00e4\u00dfig HTTP-Basic-Authentication verwenden.<\/span><\/p>\n<pre><code>output.elasticsearch:\r\n  hosts: [\"localhost:9200]\r\n  username: \"elastic\"\r\n  password: \"changeme\"<\/code><\/pre>\n<p><span class=\"md-plain md-expand\">F\u00fcr die Visualisierung in Kibana stehen vordefinierte Dashboards zur Verf\u00fcgung. Diese werden initial geladen und anschlie\u00dfend Metricbeat ausgef\u00fchrt. Standardm\u00e4\u00dfig werden im Abstand von 30 Sekunden Daten an Elasticsearch \u00fcbermittelt (zur Anpassung siehe &#8222;<\/span>reload.period&#8220;<span class=\"md-plain md-expand\"> in der Konfiguration). Im Zuge dessen wird automatisch ein Index f\u00fcr die Eventdaten in Elasticsearch erstellt, der f\u00fcr die Beschleunigung von Anfragen dient.<\/span><\/p>\n<pre><code>user@host:~\/metricbeat-8.5.2-linux-x86_64$ .\/metricbeat setup --dashboards\r\nuser@host:~\/metricbeat-8.5.2-linux-x86_64$ .\/metricbeat -e -c metricbeat.yml -d \"publish\"<\/code><\/pre>\n<p class=\"md-end-block md-p md-focus\"><span class=\"md-plain\">In Kibana (<\/span><span class=\"md-link md-pair-s\"><a href=\"http:\/\/localhost:5601\/\">http:\/\/localhost:5601<\/a><\/span><span class=\"md-plain\">) erfolgt nun das Anlegen einer Data-View unter &#8222;Stack Management\/Data Views&#8220;. Das Index-Pattern wird auf &#8222;metricbeat-*&#8220; festgelegt und &#8222;@timestamp&#8220; als Timestamp-Field ausgew\u00e4hlt. Kibana erkennt den im vorangegangen Schritt erstellten Index automatisch. Die Eventdaten lassen sich unter Analytics\/Discover tabellarisch und unter Analytics\/Dashboards mit der Auswahl &#8222;[Metricbeat System] Host Overview ECS&#8220; visuell anzeigen (siehe Abbildung 1).<\/span><\/p>\n<p><a href=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/kibana_metricbeat.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1701\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/kibana_metricbeat.png\" alt=\"\" width=\"1920\" height=\"1080\" \/><\/a><\/p>\n<p style=\"text-align: center\">Abbildung 1: Kibana-Dashboard f\u00fcr Systemdaten<\/p>\n<h2 id=\"logstash\">4. Logstash<\/h2>\n<p>Logstash bezeichnet eine Datenverarbeitungspipeline, die sich durch eine gro\u00dfe Auswahl an Plugins f\u00fcr die Erfassung (Input), Analyse und Transformation (Filter) und Weiterleitung (Output) von Log-, Metric- und Anwendungsdaten auszeichnet. So k\u00f6nnen Eventdaten nicht nur zu Elasticsearch \u00fcbertragen werden, sondern auch Gegenstand einer E-Mail darstellen oder als Eingabe f\u00fcr eine Redis-Datenbank dienen. Analog zu Beats besteht die M\u00f6glichkeit eigene Plugins f\u00fcr Logstash zu entwickeln, wobei Kenntnisse in der Programmiersprache Ruby notwendig sind. Unter &#8222;Stack Management\/Pipelines&#8220; in Kibana lassen sich eigene Datenverarbeitungsanweisungen realisieren, die mit Hilfe des &#8222;Pipeline-Viewers&#8220; \u00fcberwacht werden k\u00f6nnen. Eine Pipeline besteht aus mindestens einem Input, mindestens einem Output und kann optional um Filter erg\u00e4nzt werden. F\u00fcr den Output wird eine Dead-Letter-Queue betrieben, die eine \u00dcbermittlung ausstehender Eventdaten nach z.B. einem Netzwerkausfall sicherstellt.<\/p>\n<h3>Beispiel<\/h3>\n<p><span class=\"md-plain md-expand\">Die Analyse von Wetterdaten ist f\u00fcr verschiedene Branchen, z.B. f\u00fcr die Landwirtschaft oder den Tourismus, von gro\u00dfer Bedeutung. Daher werden im folgenden Logstash-Beispiel Wetter-Daten von Leipzig \u00fcber die <\/span><span class=\"md-meta-i-c md-link\"><a href=\"https:\/\/open-meteo.com\/en\/docs\"><span class=\"md-plain\">Weather Forecast API<\/span><\/a><\/span><span class=\"md-plain md-expand\"> von Open-Meteo abgerufen und in Elasticsearch \u00fcberf\u00fchrt. Da die <a href=\"https:\/\/www.redhat.com\/de\/topics\/api\/what-are-application-programming-interfaces\">API<\/a> mit JSON-Daten antwortet, muss zun\u00e4chst das JSON-Plugin f\u00fcr Logstash aktiviert werden. Daf\u00fcr wird das Dockerfile (docker-elk\/logstash) um folgende Zeile erg\u00e4nzt:<\/span><\/p>\n<pre><code>RUN logstash-plugin install logstash-filter-json<\/code><\/pre>\n<p>Anschlie\u00dfend wird die Konfigurationsdatei &#8222;logstash.conf&#8220; (docker-elk\/logstash\/pipeline) angepasst, wobei die Einstellungen zum Bezug von Beats- und TCP-Daten und die \u00dcbermittlung an Elasticsearch bereits enthalten sind. F\u00fcr den (periodischen) Abruf von API-Daten wird das Logstash-Plugin &#8222;HTTP-Poller&#8220; als Input verwendet, welches die abzurufenden URLs sowie die Aufrufmethoden (z.B. get) zusammenfasst und den Abruftakt (30 Sekunden) spezifiziert. \u00dcber das JSON-Filter-Plugin werden die Rohdaten aus dem Feld &#8222;message&#8220; in Schl\u00fcssel-Wert-Paare \u00fcberf\u00fchrt. Zus\u00e4tzlich wurde &#8222;stdout&#8220; als Ausgabe erg\u00e4nzt, um den korrekten Abruf auf der Konsole kontrollieren zu k\u00f6nnen. F\u00fcr vereinfachtes Rechtemanagement werden in diesem Beispiel die Standard-Zugangsdaten f\u00fcr Elasticsearch verwendet, wovon in einer Produktionsumgebung abzusehen ist. Zuletzt wird f\u00fcr die API-Daten ein neuer Index &#8222;open-meteo-api&#8220; angelegt, um diese von anderen Eventdaten abgrenzen zu k\u00f6nnen und um zuk\u00fcnftige Anfragen zu beschleunigen.<\/p>\n<pre><code>input {\r\n\tbeats { port =&gt; 5044 }\r\n\ttcp { port =&gt; 50000 }\r\n\thttp_poller {\r\n\t\turls =&gt; {\r\n\t\t\thttp =&gt; {\r\n\t\t\t\tmethod =&gt; get\r\n\t\t\t\turl =&gt; \"https:\/\/api.open-meteo.com\/v1\/forecast?latitude=51.34&amp;longitude=12.37&amp;hourly=temperature_2m\"\r\n\t\t\t}\r\n\t\t}\r\n\t\tschedule =&gt; { \"every\" =&gt; \"30s\" }\r\n\t}\r\n}\r\n\r\nfilter {\r\n\tjson { source =&gt; \"message }\r\n}\r\n\r\noutput {\r\n\telasticsearch {\r\n\t\thosts =&gt; \"elasticsearch:9200\"\r\n                index =&gt; \"open-meteo-api\"\r\n\t\tuser =&gt; \"elastic\"\r\n\t\tpassword =&gt; \"changeme\"\r\n\t}\r\n\tstdout { }\r\n}<\/code><\/pre>\n<p>Durch Wechsel auf die &#8222;open-meteo-api*&#8220;-Data-View der Discover-Ansicht von Kibana, die analog zum Beispiel im Abschnitt Beats zun\u00e4chst angelegt werden muss, k\u00f6nnen die erhaltenen und transformierten Daten schlie\u00dflich eingesehen werden.<\/p>\n<h2 id=\"elasticsearch\">5. Elasticsearch<\/h2>\n<p>Nachdem durch Beats und Logstash Eventdaten aufgenommen und transformiert wurden, dient Elasticsearch als <a href=\"https:\/\/www.redhat.com\/de\/topics\/api\/what-is-a-rest-api\">REST<\/a>-basierte Such- und Analysemaschine der Indexierung, Speicherung und Abfrage dieser. Elasticsearch basiert auf der Suchmaschine Apache Lucene und arbeitet dokumentenorientiert, d.h. die Eventdaten m\u00fcssen keinem festen Datenbankschema folgen, sondern definieren die Struktur, \u00e4hnlich zu JSON, in sich selbst. F\u00fcr Abfragen, die \u00fcber Elasticsearch-API-Endpunkte abgearbeitet werden, steht eine dom\u00e4nenspezifische Sprache (Query DSL) zur Verf\u00fcgung. Durch den Betrieb auf potentiell mehreren Netzwerkknoten wird Elasticsearch auch als horizontal skalierbare, verteilte Suchmaschine bezeichnet, d.h. Anfragen werden an verschiedenen Knoten bearbeitet und die Ergebnisse zusammengef\u00fchrt. Au\u00dferdem erfolgt standardm\u00e4\u00dfig eine Replikation der Eventdaten. Neben der Unterst\u00fctzung von datums- und zeitbezogenen, numerischen und geographischen Datenformaten unterst\u00fctzt Elasticsearch auch die Verwaltung von Text inkl. Volltextabfragen \u00fcber invertierte Indizes. Durch das Ranking von Eventdaten wird erlaubt, die Reihenfolge der Ergebnisse einer Query zu modifizieren. Elasticsearch ist dar\u00fcber hinaus in der Lage, Eingaben bei der Suche auf z.B. Rechtschreibfehler zu \u00fcberpr\u00fcfen und ggf. ein Fuzzy-Matching, d.h. das Einbeziehen von Eventdaten in die Ergebnismenge bei ausreichend hoher \u00c4hnlichkeit, durchzuf\u00fchren.<\/p>\n<h3>Beispiel<\/h3>\n<p>Einen Mehrwert aus den Daten der Wetter-API erh\u00e4lt man durch Speicherung und Indexierung, wodurch eine Durchsuchung bzw. Filterung erlaubt wird. Ausgehend vom vorherigen Abschnitt zu Logstash zeigt dieses Beispiel eine M\u00f6glichkeit der Datenabfrage. Folgender Curl-Befehl liefert die Eventdaten der letzten 30 Minuten und den Durchschnittswert der aufgenommenen Temperaturen im JSON-Format zur\u00fcck. F\u00fcr die HTTP-Basic-Authentifizierung werden Nutzername und Passwort hinzugef\u00fcgt.<\/p>\n<pre><code>curl -XGET --user elastic:changeme \"http:\/\/localhost:9200\/open-meteo-api\/_search\" -H \"kbn-xsrf: reporting\" -H \"Content-Type: application\/json\" -d'\r\n{\r\n  \"query\": {\r\n    \"range\": {\r\n      \"@timestamp\": {\r\n        \"time_zone\": \"+01:00\",\r\n        \"gte\": \"now-30m\",\r\n        \"lte\": \"now\"\r\n      }\r\n    }\r\n  },\r\n  \"aggs\": {\r\n    \"avg\": {\r\n      \"avg\": {\r\n        \"field\": \"hourly.temperature_2m\"\r\n      }\r\n    }\r\n  }\r\n}'<\/code><\/pre>\n<p>F\u00fcr die Aggregation gibt Elasticsearch beispielsweise folgendes Schl\u00fcssel-Wert-Paar zur\u00fcck:<\/p>\n<pre><code>\"aggregations\":{\r\n    \"avg\": {\r\n        \"value\":2.3194444460705634\r\n    }\r\n}<\/code><\/pre>\n<h2 id=\"kibana\">6. Kibana<\/h2>\n<p>Obwohl Elasticsearch standardm\u00e4\u00dfig API-Endpunkte f\u00fcr den Abruf von Eventdaten im JSON-Format durch Curl oder Clients f\u00fcr spezifische Programmiersprachen bereitstellt, stellt die Visualisierung zumeist eine effizientere Form der Aufbereitung dar und erm\u00f6glicht einen tieferen Einblick sowie eine bessere Analysem\u00f6glichkeit. Kibana bietet eine freie Gestaltung von Dashboards und stellt eine Vielzahl von grafischen Komponenten zur Verf\u00fcgung, u.a. Graphen, Histogramme, Linien-, Zeitreihen- und Kreisdiagramme sowie Karten f\u00fcr die Darstellung von Geodaten. Wie im Abschnitt Beats dargestellt wurde, stehen bereits nach dem Aufsetzen einige Dashboards zur Verf\u00fcgung oder k\u00f6nnen \u00fcber einen CLI-Befehl hinzugef\u00fcgt werden. F\u00fcr Eventdaten lassen sich Filter (Kibana Query Language, KQL) und Alarme definieren. Gekoppelt mit der eingebauten, unbeaufsichtigten Machine-Learning-Funktion lassen sich dar\u00fcber beispielsweise Anomalien identifizieren und in Echtzeit Benachrichtigungen ausl\u00f6sen. Zum Teilen der Eventdaten stehen au\u00dferdem Exportfunktionen nach PDF, PNG, oder CSV zur Verf\u00fcgung. Ebenso lassen sich Kibana-Boards in Webseiten einbetten. Neben der Visualisierung von Eventdaten erm\u00f6glicht Kibana einen Zugriff auf Funktionen des gesamten Elastic Stacks, z.B. lassen sich neue Datenquellen hinzuf\u00fcgen, Logstash-Pipelines definieren oder Elasticsearch-Queries \u00fcber einen Editor erstellen und testen. Zur Begrenzung des Zugriffs kann auf das eingebaute Authentifizierungs- und Rollensystem zur\u00fcckgegriffen werden.<\/p>\n<h3>Beispiel<\/h3>\n<p><span class=\"md-plain\">W\u00e4hrend sich die Abfrage von Eventdaten im JSON-Format \u00fcber die Elasticsearch-API vor allem f\u00fcr die Nutzung in Drittsoftware anbietet, kann \u00fcber die Nutzung von grafischen Komponenten in Kibana, die intern jene Abfragen nutzen, eine h\u00f6here Anschaulichkeit und ein besseres Verst\u00e4ndnis \u00fcber die erhaltenen Daten erreicht werden. Das Beispiel der Aggregation der Temperaturwerte aus dem Abschnitt zu Elasticsearch wird daher erweitert und auf ein Dashboard \u00fcbertragen. \u00dcber &#8222;Dashboard\/Create Dashboard&#8220; l\u00e4sst sich dieses erstellen und mit verschiedenen Komponenten bef\u00fcllen. Standardm\u00e4\u00dfig kann im oberen, rechten Teil der Filterzeitraum bestimmt und die periodische Aktualisierung des Boards aktiviert werden. Im konkreten Fall werden die Eventdaten der letzten Stunde betrachtet und eine Aktualisierung aller 30 Sekunden festgelegt.<\/span><\/p>\n<p class=\"md-end-block md-p\"><span class=\"md-plain\">F\u00fcr die Erstellung einer Komponente, die die Anzahl aller aufgenommenen Datens\u00e4tze im Filterzeitraum zeigt, ist im Bearbeitungsmodus &#8222;Select Type\/Aggregation Based\/Metric&#8220; und die &#8222;open-meteo-api*&#8220;-Data-View auszuw\u00e4hlen. Als Aggregationsmethode wird &#8222;Count&#8220; \u00fcbernommen und schlie\u00dflich der Titel (Label) auf &#8222;Datens\u00e4tze&#8220; abge\u00e4ndert.<\/span><\/p>\n<p class=\"md-end-block md-p\"><span class=\"md-plain\">F\u00fcr die Darstellung der Temperaturwerte (siehe Abbildung 2) dient eine Komponente mit drei Manometern (Gauge), welche unter &#8222;Select Type\/Aggregation Based\/Gauge&#8220; zu finden sind. Nach Auswahl der Data-View lassen sich Minimum (Min), Durchschnitt (Average) und Maximum (Max) als Metrik ausw\u00e4hlen. \u00dcber &#8222;Options&#8220; erfolgt schlie\u00dflich die Bereichsanpassung und die Modifikation von Legende und Farben.<\/span><\/p>\n<p class=\"md-end-block md-p\"><span class=\"md-plain\">Zus\u00e4tzlich wird ein weiterer Zeitfilter hinzugef\u00fcgt, um die Suche innerhalb der gelieferten Eventdaten weiter verfeinern zu k\u00f6nnen. Grunds\u00e4tzlich gibt es auch die M\u00f6glichkeit, den Filterzeitraum f\u00fcr einzelne Komponenten individuell anzupassen.<\/span><\/p>\n<p><a href=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/kibana_weather.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1803\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/kibana_weather.png\" alt=\"\" width=\"1920\" height=\"560\" \/><\/a><\/p>\n<p style=\"text-align: center\">Abbildung 2: Kibana-Dashboard f\u00fcr Temperaturdaten<\/p>\n<h2 id=\"prozessmodellierung\">7. Prozessmodellierung<\/h2>\n<p>Zum \u00dcberblick \u00fcber das vorangegangene Beispiel zur Verarbeitung und Visualisierung von Wetterdaten wird dieses als BPMN-Diagramm in Abbildung 3 aufbereitet. Der Fokus liegt insbesondere auf dem periodischen Abruf von API-Daten im JSON-Format, deren Verarbeitung und deren Darstellung mittels grafischer Komponenten in Kibana.<\/p>\n<p><a href=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/elk_pipeline.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1938\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/elk_pipeline.png\" alt=\"\" width=\"4006\" height=\"3444\" \/><\/a><\/p>\n<p style=\"text-align: center\"><span class=\"TextRun BCX4 SCXP266543286\" lang=\"DE-DE\" xml:lang=\"DE-DE\" data-usefontface=\"false\" data-contrast=\"none\"><span class=\"NormalTextRun BCX4 SCXP266543286\">Abbildung 3: Verarbeitung und <\/span><\/span><span class=\"TextRun BCX4 SCXP266543286\" lang=\"DE-DE\" xml:lang=\"DE-DE\" data-usefontface=\"false\" data-contrast=\"none\"><span class=\"NormalTextRun BCX4 SCXP266543286\">Visualisierung von Open-Meteo-<\/span><\/span><span class=\"TextRun BCX4 SCXP266543286\" lang=\"DE-DE\" xml:lang=\"DE-DE\" data-usefontface=\"false\" data-contrast=\"none\"><span class=\"NormalTextRun BCX4 SCXP266543286\">Wetterdaten<\/span><\/span><\/p>\n<h2 id=\"vorteile\">8. Vorteile<\/h2>\n<p><strong>Kostenlos &amp; Open-Source<\/strong>: Ein Hauptgrund f\u00fcr die steigende Beliebtheit des Elastic Stacks ist die geringe finanzielle Barriere f\u00fcr den Einstieg. Alle Komponenten (Elasticsearch, Kibana, Logstash &amp; Beats) sind kostenlos und Open-Source, bedeutet, es gibt keine Lizenzgeb\u00fchren, was den Einstieg und die Verwendung in einer selbst gehosteten Umgebung beg\u00fcnstigt.<\/p>\n<p><strong>Verschiedene Hosting-Optionen<\/strong>: F\u00fcr Unternehmen ist es sinnvoll aus verschiedenen Hosting-Optionen zu w\u00e4hlen. Je nach Ressourcen l\u00e4sst sich eine selbstgehostete In-House-Variante umsetzen oder der Elastic Stack als dezentral verwalteter Dienst nutzen. Hierbei gibt es von Elasticsearch verschiedene Preismodelle f\u00fcr die Nutzung der Elastic-Cloud, alternativ auch andere externe L\u00f6sungen, wie z.B. Amazon OpenSearch.<\/p>\n<p><strong>Zentralisiertes Logging<\/strong>: Das im Elastic Stack integrierte zentrale Logging erm\u00f6glicht es, Logdaten von zunehmend komplexen Systemen auszuwerten und in einem einzigen Index zusammenzuf\u00fchren. Dadurch k\u00f6nnen Zusammenh\u00e4nge zwischen Daten verschiedener Quellen hergestellt werden und die Liste der Anwendungsszenarien um Dinge wie Ursachenanalyse und Monitoring erweitert werden.<\/p>\n<p><strong>Echtzeit-Datenanalyse &amp; -Visualisierung<\/strong>:\u00a0Kibana liefert die M\u00f6glichkeit, Echtzeitdaten aus Elasticsearch zu visualisieren und in individuell anpassbaren Dashboards darzustellen. Dadurch wird das Verst\u00e4ndnis und eine schnelle Erkenntnis aus den Daten beg\u00fcnstigt und somit die Agilit\u00e4t des Unternehmens sowie Entscheidungsfindungen gef\u00f6rdert.<\/p>\n<h2 id=\"nachteile\">9. Nachteile<\/h2>\n<p><strong>Komplexes Management<\/strong>: Der Elastic Stack f\u00fcgt einem Projekt oder Unternehmen eine weitere Ebene der Komplexit\u00e4t hinzu. Die Einrichtung und Wartung des Systems muss somit mit dem Nutzen abgew\u00e4gt werden, da dadurch zus\u00e4tzliche Kosten entstehen. Elemente, die die Komplexit\u00e4t erh\u00f6hen, sind:<\/p>\n<ul>\n<li>Einrichten der Log-Analyse und Einspeisung<\/li>\n<li>Entwicklung von Daten-Pipelines<\/li>\n<li>Monitoring &amp; Datensicherung<\/li>\n<li>Performance-Optimierung<\/li>\n<li>Testen &amp; Konfigurieren<\/li>\n<li>Sicherheit, Fallback und Anwendungen der Daten<\/li>\n<\/ul>\n<p><strong>Wartungskosten<\/strong>: Um den Elastic Stack zu entwickeln, zu skalieren und zu erhalten werden Infrastruktur und Ressourcen ben\u00f6tigt. Die Kosten f\u00fcr Rechenleistung und Datenspeicherung h\u00e4ngen vom t\u00e4glichen Logvolumen und dem Zeitraum der Archivierung ab. Diese Infrastrukturkosten tendieren mit der Zeit zu steigen, da sich in dynamischen Systemen Daten zunehmend anh\u00e4ufen. Zus\u00e4tzlich verursachen die Wartung und die Individualisierung des Systems bei Skalierung ebenfalls Kosten.<\/p>\n<p><strong>Stabilit\u00e4t<\/strong>: Bei wachsendem Datenumlauf im Elastic Stack kann es zu Problemen mit der Stabilit\u00e4t kommen. Wenn der Index die Limitation der Datenspeicherung des jeweiligen Knotens\/Containers \u00fcberschreitet, kann das Indexieren scheitern, was Datenverlust oder einen Absturz des System zur Folge haben kann.<\/p>\n<h2 id=\"alternativen\">10. Alternativen<\/h2>\n<p><strong>Microsoft Power BI<\/strong> ist eine cloudbasierte Business-Intelligence-Plattform. Die Funktionalit\u00e4ten sollen Unternehmen bei der Entwicklung von Berichten, Dashboards und Analysen unterst\u00fctzen. Hierbei kann der Anwender Daten aus vielen verschiedenen Quellen verkn\u00fcpfen und daraus unternehmensrelevante Einblicke gewinnen. Power BI nutzt hierf\u00fcr die eigene Programmiersprache &#8222;M&#8220; f\u00fcr die Erstellung von Abfragen. Analog zu Kibana k\u00f6nnen Daten in Echtzeit visualisiert und analysiert werden.<\/p>\n<p><strong>Salesforce Tableau\u00a0<\/strong><span data-offset-key=\"5fsrc-22-0\">ist<\/span><span data-offset-key=\"5fsrc-23-0\"> ebenfalls ein cloudbasiertes Business-Intelligence-Tool, das es erm\u00f6glicht, Daten aus verschiedenen Quellen zu sammeln. Es bietet Benutzern die M\u00f6glichkeit, Daten in Echtzeit zu erfassen, zu analysieren und zu visualisieren. Mit Tableau k\u00f6nnen Benutzer Daten aus verschiedenen Quellen wie Excel, CSV, Salesforce, SQL-Server und mehr abrufen. Es bietet auch verschiedene Funktionen, mit denen Benutzer Daten in Dashboards, Berichte und andere interaktive Visualisierungen umwandeln k\u00f6nnen. Alle Komponenten sind \u00fcber eine graphische Benutzeroberfl\u00e4che zu erreichen.<\/span><\/p>\n<h2 id=\"fazit\">11. Fazit &amp; Ausblick<\/h2>\n<p>Datenmanagement spielt f\u00fcr technologiegetriebene Unternehmen eine zunehmend gr\u00f6\u00dfere Rolle. Der Elastic Stack umfasst alle n\u00f6tigen Werkzeuge zur Erfassung, Transformation und Aggregation von Eventdaten sowie deren Indexierung, Filterung und Visualisierung. Dies wurde innerhalb des Beitrags \u00fcber den periodischen Abruf von Wetterdaten sowie deren Filterung per Curl-Befehl und Visualisierung mittels Kibana demonstriert. Ausgehend davon k\u00f6nnen weitere Eventdaten hinzugef\u00fcgt und analysiert werden.<\/p>\n<p>Besonders von Vorteil ist der Elastic Stack f\u00fcr Unternehmen, die mit Log- und Eventdaten skalieren. Durch den Open-Source-Charakter eignet es sich jedoch ebenso f\u00fcr den privaten Gebrauch. Die M\u00f6glichkeiten des Systems werden generell durch die Qualit\u00e4t der erfassten Daten limitiert. Im Optimalfall sollten die Eventdaten daher schon vorab in einem strukturierten Format, bspw. JSON, vorliegen oder ein Verfahren zum Parsen der Daten bekannt sein.<\/p>\n<p>Abgesehen davon l\u00e4sst sich der Elastic Stack nahezu endlos skalieren, sodass die Nutzung seitens des Unternehmens letztendlich vom Kosten-Nutzen-Faktor der jeweiligen Anwendung abh\u00e4ngt. Dieser kann je nach Bedarf in der Komplexit\u00e4t des Managements und den Wartungskosten stark variieren.<\/p>\n<p>Im Endeffekt \u00fcberwiegen die Vorteile gegen\u00fcber den Nachteilen. Wie in der Motivation angedeutet, findet der Elastic Stack zahlreiche <a href=\"https:\/\/www.elastic.co\/de\/customers\/success-stories?usecase=enterprise-search&amp;industry=All\" target=\"_blank\" rel=\"noopener\">Einsatzszenarien<\/a>. Deshalb ist davon auszugehen, dass der Bedarf an solcher Tech-Stack-Software weiter anhalten wird. Besonders spannend k\u00f6nnten dabei neue Features, bspw. die sprachbasierte Suche, werden.<\/p>\n<hr \/>\n<h2 id=\"referenzen\">12. Referenzen<\/h2>\n<ul>\n<li><a href=\"https:\/\/www.elastic.co\/de\/elastic-stack\/\">https:\/\/www.elastic.co\/de\/elastic-stack\/<\/a><\/li>\n<li><a href=\"https:\/\/logz.io\/learn\/complete-guide-elk-stack\/#intro\">https:\/\/logz.io\/learn\/complete-guide-elk-stack\/#intro<\/a><\/li>\n<li><a href=\"https:\/\/www.informatik-aktuell.de\/entwicklung\/methoden\/elastic-stack-mit-strukturierten-logs-schneller-fehler-finden.html\">https:\/\/www.informatik-aktuell.de\/entwicklung\/methoden\/elastic-stack-mit-strukturierten-logs-schneller-fehler-finden.html<\/a><\/li>\n<li><a href=\"https:\/\/www.elastic.co\/de\/beats\/\">https:\/\/www.elastic.co\/de\/beats\/<\/a><\/li>\n<li><a href=\"https:\/\/www.elastic.co\/de\/beats\/filebeat\">https:\/\/www.elastic.co\/de\/beats\/filebeat<\/a><\/li>\n<li><a href=\"https:\/\/www.elastic.co\/de\/beats\/metricbeat\">https:\/\/www.elastic.co\/de\/beats\/metricbeat<\/a><\/li>\n<li><a href=\"https:\/\/www.elastic.co\/de\/beats\/packetbeat\">https:\/\/www.elastic.co\/de\/beats\/packetbeat<\/a><\/li>\n<li><a href=\"https:\/\/www.elastic.co\/de\/beats\/winlogbeat\">https:\/\/www.elastic.co\/de\/beats\/winlogbeat<\/a><\/li>\n<li><a href=\"https:\/\/www.elastic.co\/de\/beats\/auditbeat\">https:\/\/www.elastic.co\/de\/beats\/auditbeat<\/a><\/li>\n<li><a href=\"https:\/\/www.elastic.co\/de\/beats\/heartbeat\">https:\/\/www.elastic.co\/de\/beats\/heartbeat<\/a><\/li>\n<li><a href=\"https:\/\/www.elastic.co\/de\/beats\/functionbeat\">https:\/\/www.elastic.co\/de\/beats\/functionbeat<\/a><\/li>\n<li><a href=\"https:\/\/www.elastic.co\/guide\/en\/ecs\/current\/ecs-reference.html\">https:\/\/www.elastic.co\/guide\/en\/ecs\/current\/ecs-reference.html<\/a><\/li>\n<li><a href=\"https:\/\/logz.io\/blog\/elk-stack-on-docker\/\">https:\/\/logz.io\/blog\/elk-stack-on-docker\/<\/a><\/li>\n<li><a href=\"https:\/\/www.elastic.co\/de\/logstash\/\">https:\/\/www.elastic.co\/de\/logstash\/<\/a><\/li>\n<li><a href=\"https:\/\/discuss.elastic.co\/t\/how-to-connect-to-an-api-using-logstash\/192123\/7\">https:\/\/discuss.elastic.co\/t\/how-to-connect-to-an-api-using-logstash\/192123\/7<\/a><\/li>\n<li><a href=\"https:\/\/www.capterra.com.de\/compare\/149304\/176586\/elasticsearch\/vs\/power-bi?vs[]=37660\">https:\/\/www.capterra.com.de\/compare\/149304\/176586\/elasticsearch\/vs\/power-bi?vs[]=37660<\/a><\/li>\n<li><a href=\"https:\/\/powerbi.microsoft.com\/en-us\/what-is-power-bi\/\">https:\/\/powerbi.microsoft.com\/en-us\/what-is-power-bi\/<\/a><\/li>\n<li><a href=\"https:\/\/www.elastic.co\/de\/elasticsearch\/\">https:\/\/www.elastic.co\/de\/elasticsearch\/<\/a><\/li>\n<li><a href=\"https:\/\/www.elastic.co\/guide\/en\/elasticsearch\/reference\/current\/query-dsl-fuzzy-query.html\">https:\/\/www.elastic.co\/guide\/en\/elasticsearch\/reference\/current\/query-dsl-fuzzy-query.html<\/a><\/li>\n<li><a href=\"https:\/\/www.elastic.co\/de\/kibana\/\">https:\/\/www.elastic.co\/de\/kibana\/<\/a><\/li>\n<li><a href=\"https:\/\/www.elastic.co\/de\/customers\/\">https:\/\/www.elastic.co\/de\/customers\/<\/a><\/li>\n<li><a href=\"https:\/\/www.tableau.com\/de-de\">https:\/\/www.tableau.com\/de-de<\/a><\/li>\n<li><a href=\"https:\/\/kruschecompany.com\/de\/elastic-stack-elk\/#Fazit\">https:\/\/kruschecompany.com\/de\/elastic-stack-elk\/#Fazit<\/a><\/li>\n<li><a href=\"https:\/\/blog.ordix.de\/elasticsearch-co\">https:\/\/blog.ordix.de\/elasticsearch-co<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Inhalte Motivation Inbetriebnahme Beats Logstash Elasticsearch Kibana Prozessmodellierung Vorteile Nachteile Alternativen Fazit &amp; Ausblick Referenzen 1. Motivation F\u00fcr die Ausrichtung<\/p>\n","protected":false},"author":82,"featured_media":1578,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-1557","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-betriebliche-informationssysteme"],"_links":{"self":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/1557","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/users\/82"}],"replies":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/comments?post=1557"}],"version-history":[{"count":94,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/1557\/revisions"}],"predecessor-version":[{"id":2897,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/1557\/revisions\/2897"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/media\/1578"}],"wp:attachment":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/media?parent=1557"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/categories?post=1557"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/tags?post=1557"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}