24. Juli 2017 User Stories

Transaktions-Monitoring & Fehleranalyse bei Wirecard mit dem Elastic Stack

Von Jan Krynojewski

Die Wirecard AG hat sich seit der Gründung im Jahre 1999 zu einem der weltweit führenden und unabhängigen Anbieter von Outsourcing- und White-Label-Lösungen für den elektronischen Zahlungsverkehr entwickelt.

Hintergrund & Herausforderung

Die Service Delivery im Bereich des Acquiring Processing der Wirecard Technologies GmbH ist für den reibungslosen Betrieb der Backend-Systeme zur Abwicklung von Kreditkartenzahlungen verantwortlich. Unsere Aufgabe ist es, die Zahlung von eCommerce-Händlern, POS-Terminals und weiteren Kanälen anzunehmen und diese zu den Netzwerken von Visa, MasterCard, JCB und China UnionPay zu vermitteln. Eine schnelle Abwicklung, sprich Antwortzeit, sowie höchstmögliche Verfügbarkeit der Services sind dabei von besonderer Bedeutung.

Aufgrund der Vielzahl an verteilten Systemen, welche an der Abwicklung einer jeden Transaktion beteiligt sind, haben wir für das bisherige Monitoring auf dem zentralen Datenbank-Cluster aufgesetzt. Denn hier laufen alle, für den Betrieb relevanten Daten und Informationen zusammen.

Mit steigendem Transaktionsvolumen stellte sich jedoch schnell die Frage der Skalierbarkeit. Denn ein jeder Monitoring-Request bedeutet eine SQL-Abfrage auf zentrale Tabellen. Wir mussten daher stets ein optimales Verhältnis zwischen Abfrage-Frequenz und Systemlast finden, um schnell genug Anomalien in der Transaktionsverarbeitung (z.B. auffällige Häufung von Fehlercodes oder längere Laufzeiten) entdecken zu können, ohne dabei jedoch die Performance negativ zu beeinflussen.

Bisheriger Monitoring-Prozess
Abbildung 1: Bisheriger Monitoring-Prozess

Real-time Transaktions-Monitoring mit dem Elastic Stack

Auf der Suche nach alternativen Lösungsansätzen sind wir sehr schnell auf den Elastic Stack gestoßen. Ohne technische Vorkenntnisse mit dem Elastic Stack gelang es unseren Teams, in einem vergleichsweise kurzen PoC zu beweisen, dass es durch die Kombination aus Metricbeat, Packetbeat und Filebeat mit Logstash möglich ist, alle notwendigen Daten unserer verteilten Systeme einzusammeln, zentral in Elasticsearch zu speichern und in Kibana darzustellen, ohne dabei eine einzige Abfrage an die Datenbank stellen zu müssen.

Da in unserer Infrastruktur F5 BigIP Loadbalancer zum Einsatz kommen, konnten wir die eingebaute High-Speed Logging Funktionalität der BigIP's nutzen, um wertvolle Informationen aus dem Application-Layer 7 herauszufiltern und die Daten in nahezu Echtzeit in den Syslog-Input von Logstash streamen. Dort transformieren wir die Daten indem wir z.B. IDs mit Termen ersetzen, was die Visualisierung und Interpretation der Daten in Kibana stark erleichtert. Dieses gesamte Setup ist so performant, dass keine zusätzliche Last auf den transaktionsverarbeitenden Systemen messbar ist.

Das Setup des Elastic Stack ist dabei vergleichsweise einfach gehalten: Zwei zentrale Logstash Instanzen mit je 8 Kernen nehmen die Daten der Loadbalancer und Beat-Instanzen an und reichen diese an den Elasticsearch Cluster, bestehend aus drei Nodes, weiter.

Für unseren Anwendungsfall ist diese Cluster-Größe ideal. Der Wartungsaufwand ist gering und doch bietet das System genug Durchsatz um unsere Log-Daten und Events ohne große Verzögerung zu verarbeiten.

Unsere 24/7 Operations-Teams haben nun durch ein zentrales Kibana-Dashboard alle kritischen Informationen stets im Blick und können die Verarbeitung von Transaktionen über Systemgrenzen hinweg in Echtzeit Ende-zu-Ende überwachen. Unser Dashboard enthält unter anderem folgende Informationen:

  • Akzeptanz- / Ablehnungs-Raten
  • Verteilung auf Card-Schemes (Anteil von Visa, MasterCard, JCB, China UnionPay)
  • Verteilung der Transaktionen auf unsere geo-redundanten Rechenzentren
  • Technische Fehler Codes
  • Perzentilwert der Transaktionslaufzeiten
Kibana Dashboard
Abbildung 2: Kibana Dashboard

Mithilfe von X-Pack Alerting konnten wir zudem granulare Checks implementieren, welche alle fünf Sekunden ausgeführt werden. Dies hat, zusammen mit der übersichtlichen Darstellung in Kibana, die Reaktionszeit unserer Teams im Problemfall merklich reduziert.

Durch die Drill-Down und Filter-Funktionalitäten in Kibana gestaltet sich die Root-Cause-Analyse im Fehlerfall zudem erheblich einfacher, da alle Informationen zentral vorliegen und einfach miteinander korreliert werden können.

Monitoring mit dem Elastic Stack
Abbildung 3: Monitoring mit dem Elastic Stack

Ausblick – Weitere Schritte

Die guten Erfahrungen mit dem Elastic Stack haben uns darin bestätigt, dieses System weiter ausbauen und weitere Funktionalitäten zu integrieren.

In einem nächsten Schritt planen wir alle Logfiles unserer Applikationen mittels Filebeat an Logstash/Elasticsearch zu schicken. In Kombination mit dem LogTrail Plugin für Kibana können wir dann unsere Logs in Echtzeit einsehen, ohne uns dabei auf den eigentlichen Servern einloggen zu müssen.

Kibana soll somit zum zentralen Cockpit für unsere Operation-Teams etabliert werden, indem es alle Daten in einer Ansicht vereint. Dies wird Fehleranalysen weiter vereinfachen.

Zusätzlich werden wir einen Proof-of-Concept von X-Pack Machine Learning durchführen um herauszufinden, inwieweit es uns weiter bei der Überwachung von Transaktionen unterstützen kann.


Bio:

Jan Krynojewski ist Head of Service Delivery Acquiring Processing bei der Wirecard Technologies GmbH. Zuvor arbeitete er als Application / DevOps Engineer, wo er langjährige Erfahrungen im Bereich Monitoring und Automatisierung sammelte.

Seit Anfang 2016 beschäftigt er sich mit der Etablierung zentraler Business-Monitoring Systeme um verteilten, operativen Teams eine einheitliche Sicht auf die Systemlandschaft sowie eine effektivere Zusammenarbeit zu ermöglichen.