Bei Anruf Fehler bereits behoben Proaktive Fehlerbeseitigung ohne
Bei Anruf: Fehler bereits behoben Proaktive Fehlerbeseitigung ohne Kundenbeteiligung Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 1
Über uns. . . Die Holisticon AG ist eine Managementund IT-Beratung mit Sitz in Hamburg. Mit einem ganzheitlichen Beratungsansatz unterstützen wir unsere Kunden in ihren Entwicklungsprojekten auf technischer, taktischer wie auch strategischer Ebene. http: //blog. holisticon. de Twitter: @holisticon Tobias Sven Gindler Bunge Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 2
Agenda ■ Motivation ■ Mögliche Fehlerquellen ■ … und wie man diese aufspürt ■ Verarbeitung von Logfiles ■ Implizites Logging ■ Alerting ■ Fragen und Diskussion Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 3
Motivation ■ Gesteigerte Komplexität in Softwaresystemen steigert auch Fehlerwahrscheinlichkeit ■ Fehler können nie mit Gewissheit ausgeschlossen werden. ■ In produktiver Umgebung sollte Fehler von Kunden unbemerkt bleiben ■ … und automatisiert erkannt und schnell behoben werden. Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 4
Beispiel 1: Benutzer erleben Fehler ■ Kunde besucht Onlineshop Kunde wählt Produkt Kunde meldet sich an / erstellt Konto Kunde gibt Zahlungsdaten ein Beim Speichern tritt ein Fehler auf Kunde sieht Fehlerseite ■ Geschäftsabschluss findet nicht statt Dem Kunden ist klar, dass Kauf nicht stattgefunden hat Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 5
Beispiel 2: Benutzer bezahlen Fehler ■ Kunde besucht Onlineshop Kunde wählt Produkt Kunde meldet sich an / erstellt Konto Kunde gibt Zahlungsdaten ein Kunde bestätigt Kauf und sieht Kaufbestätigung ■ Geschäftsabschluss findet statt ■ Kauf wird nicht ins ERP System übertragen Kunde bezahlt Fehler ohne das Ware geliefert wird Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 6
Fehler sind ungemütlich im Geschäftsalltag Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 7
Vielfältige Fehlerquellen Infrastruktur Daten Software / Implementierung Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 8
Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 9
Fehler in der Anwendung ■ Software Programmierfehler Unklare / unvollständige Anforderungen Integrationsinkonsistenzen gegenüber externen Komponenten ■ Datenkonsistenz / -korrektheit Fehlerhafte Daten können zu unvorhersehbaren Systemverhalten führen Fehlerhafte Daten können durch Fehler in der Software und der Infrastruktur entstehen Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 11
Detektion von Software-Fehlern ■ Meldung durch den Endbenutzer ■ Überprüfung der persistenten Daten Konsistenz Anforderungen ■ Auswertung von Log-Dateien Access-Logs Anwendungsserverlogs Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 12
Log-Dateien ■ Sind technologieunabhängig ■ Ausgabe-Formate sind vielfältig ■ Müssen fortlaufend verbessert werden Hinzufügen fehlender Informationen Entfernung von Ausgaben ohne Mehrwert Optimierung der Log Level der Ausgabe Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 13
Große Systeme haben viele Log-Dateien Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 14
Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 15
Aggregation von Logausgaben ■ Nicht aggregiert 2014 -10 -05 23: 13: 30. 813 [main] INFO holisticon. examples. Test. Class - Hello World ■ Aggregiert 2014 -10 -05 23: 12: 28. 227 [main] INFO holisticon. examples. Test. Client - [SESSION_ID] [REQUEST_ID] - Hello World Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 16
Kontext-Propagation Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 17
Wie loggen wir eigentlich?
Explizites Logging Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 20
Implizites Logging Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 21
Ausgabe des impliziten Logging IMPLICIT_EXCEPTION_LOGGER: { "error. Message": { "message": "An error occurred while updating the customer" }, "invocation. Context": { "de. holisticon. examples. Customer. Dao 2", ■ n "class. Name": "method. Name": "update. Customer", "parameters": [{ "de. holisticon. examples. Customer": "Customer@7 e 14 b 389[id=10001, first. Name='Max', last. Name='Mustermann', version=1]"}] }, "throwable": { "message": "java. lang. Illegal. Argument. Exception: org. hibernate. Object. Deleted. Exception: deleted instance passed to merge: ", "stacktrace": ". . . " } } Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 22
Logging an den Komponentengrenzen Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 23
Beispiel - Webanwendung ■ Kunde erhält bei Eingabe von Zahlungsinformationen einen Fehler ■ Fehler wird im Log aufgezeichnet Identifikation über Session ID Request-ID als Klammer für Nutzerinteraktion Erweiterte Kontextinformationen ■ Kontextinformationen sind zum Beispiel URL mit Aufrufparameter / Payload SOAP / REST Kommunikation Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 24
Einschränkungen ■ Ausgabe Sicherheitskritischen Daten Komplexen Datenstrukturen Großen Datenmengen ■ Frameworkabhängige Einschränkungen JPA: Entitäten mit Relationen CDI: Injection ■ Zusammenspiel mit anderen Problemlösungen Beispiel: Fehlerseiten-Filter Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 25
Automatisierte Fehlererkennung / Alerting ■ Automatisierte Suche nach Fehlern und Schlüsselworten ■ Vergleich der gefundenen Fehler mit bereits aufgetretenen Fehlern Automatisierte Erstellung eines Tickets im Ticket System bei unbekannten Fehlern Erhöhung der Behebungspriorität im Ticket-System bei wiederholtem Auftreten Tickets enthalten Verlinkung auf Log-Servers mit vordefinierter Request ID und Session ID ■ Regelmäßige Erstellung von Fehlerreports und Fehlerstatistiken Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 27
Trac. EE ■ Kostenloses Java Framework ■ Open-Source, auf Git. Hub verfügbar https: //github. com/holisticon/tracee ■ Bereitstellung und Propagation von Session- und Request-Ids in verteilten Systemen ■ Leicht erweiterbar ■ Verwendete Techniken auf andere Technologie-Stacks übertragbar Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 28
Trac. EE – Implizites Logging ■ Implizites (Kontext-)Logging im Falle eines Fehlers ■ Unterstützt viele Java-Technologien ■ Leicht einzubinden ■ Log-Ausgaben flexibel konfigurierbar ■ Einfach erweiterbar Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 29
Zusammenfassung Alerting des Logservers Kundenbeschwerde Reproduktion durch Fehler. Kontext Kunden ermitteln / korrigieren Fehlerkorrektur Bugfix Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 30
Fragen und Diskussion Bei Anruf: Fehler bereits behoben | Tobias Gindler & Sven Bunge | 31
- Slides: 28