Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Zentrales Logging mit Elasticsearch

Simon Schneider
May 25, 2019
190

Zentrales Logging mit Elasticsearch

In der Welt der Microservices ist die Anzahl der Logs-produzierenden Prozesse sehr groß und liegt durchaus im Bereich von 100-1000 Prozessen. Eine manuelle Log-Verarbeitung ist hier so gut wie undenkbar. Doch auch monolithische Services laufen oftmals dezentral und das Analysieren der Produktions-Logs ist dann häufig auch mit viel Aufwand verbunden. Mithilfe eines zentralen Loggins lässt sich eine viel bessere Übersicht über den Gesamtzustand eines Systems gewinnen, da nicht jedes Log einzeln untersucht werden muss, sondern die Logs aggregiert und somit auch leicht automatisiert ausgewertet werden können. Elasticsearch bietet die Möglichkeit, große Mengen an Logs zu speichern und zu durchsuchen. Das Ökosystem um Elasticsearch unterstützt Entwickler, DevOps usw. dabei, die Logs schnell und einfach aufzubereiten, damit diese gut analysierbar sind. In diesem Vortrag werden die Vor- und Nachteile des zentralen Loggins dargelegt und gezeigt, wie sich Elasticsearch (bzw. der ELK-Stack) in Umgebungen einbinden lässt.

Simon Schneider

May 25, 2019
Tweet

Transcript

  1. Wer bin ich • Simon Schneider • Software Engineer bei

    der Rewe Digital ◦ Schwerpunkt: Suche • Bis Oktober 2018, INFORM GmbH in Aachen ◦ Schwerpunkt: Zentrales Logging 2/28
  2. Agenda 1) Allgemein a) Was bedeutet “Zentrales Logging”? b) Wie

    funktioniert der Elastic Stack? c) Wie nutzt REWE Digital den Elastic Stack? 2) Ingest und Speicherung a) Setup Elasticsearch b) Setup Logstash 3) Datenanalyse mit Kibana a) Live Demo 4) Fragen 3/28
  3. Was bedeutet “Zentrales Logging” ? Dezentrales Logging VPN Maschine Jump

    Host (beim Kunden) Application Server Entwickler PC 5/28
  4. Was bedeutet “Zentrales Logging” ? Zentrales Logging Application Server Entwickler

    PC Logging Service Anfragen der Logs Senden der Logs 6/28
  5. Zentrales Logging Vor- und Nachteile des Zentralen Loggings Pros Contras

    • Single source of truth (SSOT): Alle Logs an einem Ort => Leicht zu finden Keine Suchen nach Logs auf Servern => Schneller • Neue Zusammenhänge: Globale Sicht ermöglicht arbeiten über Service Grenzen => CorrelationId • Verbesserte Sicherheit: Entwickler benötigen weniger/keinen Zugriff auf Produktivsysteme • Exploratives Verhaltensanalyse: Entwickler können mit wenig Aufwand Programmverhalten im Livebetrieb nachvollziehen • Zusätzliche Infrastruktur: Neuer Speicherplatz und Rechenkapazität wird benötigt • Großer Initialaufwand: Alle existierenden Services müssen auf das neue System umgestellt werden. 7/28
  6. Wie funktioniert der Elastic Stack ? Allgemeines • Bestandteile ◦

    Elasticsearch ◦ Logstash ◦ Kibana ◦ Beats • Maintainer: Elastic NV (Niederlande) • Lizenz: Apache License Version 2.0 9/28
  7. Wie funktioniert der Elastic Stack ? Aufbau Elastic Stack Kibana

    Elasticsearch Beats Logstash SaaS Self Managed Elastic Stack Visualize & Manage Store, Search & Analyze Ingest Deployment Elastic Cloud Elastic Cloud Enterprise Standalone 10/28
  8. Wie funktioniert Logstash ? Logstash • Annehmen von Daten aus:

    ◦ Beats ◦ Redis ◦ Kafka ◦ Salesforce ◦ ... • Verarbeiten der Daten mit: ◦ Grok ◦ Geo IP ◦ Date/Time Parser ◦ Ruby/Java ◦ … • Ablegen der Daten in: ◦ Elasticsearch ◦ Syslog ◦ ... 11/28
  9. Wie funktionieren Beats ? Filebeat/Metricbeat/Packetbeat... • Filebeat => Logs einlesen

    • Metricbeat => System/Docker/MongoDB/Kubernetes Metriken sammeln • Packetbeat => Sammelt und Analysiert Netzwerkverkehr • Winlogbeat => Einlesen der Windows Ereignisprotokolle • Auditbeat => Einlesen der Ereignisse aus dem Linux Audit Framework • Heartbeat => Heartbeat Pings über ICMP, TCP und HTTP • Libbeat => Go Library für das entwickeln von Beats 12/28
  10. Wie funktioniert Elasticsearch ? Allgemein • Eigenschaften ◦ Suchmaschine und

    Analytics Engine auf Basis von Lucene ◦ Skalierbar auf mehrere hundert Knoten ◦ Robust gegen Störungen (Resilenz) ◦ Flexibel, verschiedene Anwendungsfälle werden abgedeckt • Kompatibilität ◦ RESTful ◦ SQL 13/28
  11. Wie funktioniert Elasticsearch ? Knoten Modi • Master ◦ Verwaltung

    des Clusters ◦ Geringe CPU Last, kaum Speicherverbrauch • Data ◦ Speichern von Daten ◦ Hohe CPU Last, hoher Speicherverbrauch, häufige Festplattenzugriffe • Ingest / Machine Learning ◦ Verarbeiten der Daten ◦ Hohe CPU Last, mittelmäßiger bis hoher Speicherverbrauch 14/28
  12. Elasticsearch Architekturen Daumenregeln Hot-Warm Indizes • Hot-Warm Architektur ◦ Master

    Knoten (3) ◦ Hot Knoten (>=3) ◦ Warm Knoten (>=3) • Indizes ◦ Jeden Tag ein neuer Index ◦ Alte Indizes werden auf die Warm Knoten verschoben ◦ Ein Alias zeigt immer auf den tagesaktuellen Index ◦ Alte Indizes werden komprimiert • Shards ◦ Shard Replication mindestens auf 2 ◦ Shard Anzahl = Datenmenge / 30 GB + 1 https://www.elastic.co/de/blog/hot-warm-architecture-in-elasticsearch-5-x 15/28
  13. Wie funktioniert Elasticsearch ? Datenhaltung Elasticsearch Elasticsearch Index Elasticsearch Shard

    Elasticsearch Shard Elasticsearch Shard Elasticsearch Shard Lucene Index Lucene Index Lucene Index Lucene Index Segment Segment Segment Segment Segment Segment Segment Segment 16/28
  14. Elastic Stack @ Logging im Rewe Online Shop - Technical

    Logs • Die Logs aller Microservice Instanzen müssen persistiert werden • Datenmenge Pro Tag: ◦ 427 Millionen Log Events ◦ 435 GB Log Daten • Datenmenge Gesamt: ◦ 5,9 Milliarden Log Events ◦ 6,09 TB Log Daten 18/28
  15. Logging im Rewe Online Shop - Logging Infrastruktur • Docker

    Node ◦ Docker / Logstash • Ingest/Master Nodes: ◦ Redis / Logstash / Elasticsearch ◦ 3 Nodes • Data Nodes: ◦ 4 CPU Cores / 64GB RAM / 2TB SSD ◦ 8 Nodes • Kibana Nodes: ◦ Kibana / Elasticsearch ◦ 2 Nodes Docker Node Ingest Node Data Node Kibana Node Elastic Stack @ 19/28
  16. Setup Logstash Pipeline Konfiguration • Input ◦ Einlesen mit “gelf”

    auf UDP Port 12201 • Filter ◦ JSON Entpacken ◦ Nginx/Service Logs unterscheiden • Output ◦ Logs an Elasticsearch senden gelf { type => docker port => 12201 } json { source => "message" target => "payload" } if [tag] == "app" { ... } elasticsearch { hosts => ["elasticsearch:9200"] } 23/28
  17. Elasticsearch Cluster Anforderungen • Workload: 1TB pro Tag • Speicherdauer:

    30 Tage • Relevanz Quantil: 7 Tage • Datenaufbereitung: Ingest • Datensammlung A B A B C A A A