Hi Thomas,
wie sehen denn Anforderungen und Umgebung aus? Grundsätzlich:
Am 10.04.19 um 09:54 schrieb Thomas Güttler:
Frage 1: Könnt ihr die Aussage (Keinen Bock mehr auf "Logging to file")
nachvollziehen?
Jein. "Logging to file" ist für mich eigentlich nur
Implementationsfrage. Manchmal passt die besser zu den Anforderungen,
manchmal schlechter. Zweitens ist daher interessanter:
Frage 2: Hat jemand schon eine Alternative zu Logfiles ausprobiert. Ein
Erfahrungsbereicht aus
der Praxis wäre interessant.
Wir nutzen Elastic-Stack für Logging zusammen mit mannigfaltigen
serverseitigen Anwendungen. Insgesamt sieht das wie folgt aus:
- Java-Module laufen in docker-Containern und sprechen via logstash
direkt mit dem Logging-Server. Das ist elegant, weil dort
Log-Nachrichten als JSON-Strukturen übergeben werden und serverseitig
relativ leicht verarbeitbar sind.
- Nicht-Java-Module, Unix-Systemdienste, ... laufen wie gehabt lokal,
dazu lebt auf jeder Maschine ein filebeat-Dienst, der einige dedizierte
Logfiles beobachtet, Nachrichten dort 'rausnimmt und an den
Logging-Server weiterleitet. Serverseitig gibt es hier
Filter-/Vorverarbeitungsprozesse im logstash, die aus den
Logfile-Zeileneinträgen auswertbare Dokumente machen.
Das funktioniert insgesamt *relativ* gut. Der Log-Server ist im
Allgemeinen extrem robust und die Suche über alle Log-Daten über die
Weboberfläche vereinfacht den Prozess erheblich.
Schmerzpunkte, die ich dort sehe:
- Zum einen (deswegen tendiere ich in unserem Use Case auch zu "logging
to file ist nervig"): Man ist sehr schnell an einem Punkt, an dem man
relativ viele und relativ komplexe Regeln hat, wie serverseitig die
Logfiles zu zerlegen sind (speziell konfigurierte Logfiles im apache
sind dort ein Standardbeispiel, bei denen ein Entwickler 'mal eben das
LogFormat ändert und plötzlich der gesamte Prozess umfällt, weil die
Information, die Du brauchst, plötzlich weiter vorn oder hinten in der
Zeile steht). Dort ist das Logging von JSON-Strukturen schlicht etwas
robuster und besser zu debuggen.
- Zum zweiten: Zugriff auf den Elastic Stack läuft als relativ schwere
Anwendung über Kibana, respektive den Browser. Das ist eine andere
Nummer, als an der Shell mal schnell ein Logfile durch verschiedene
Tools zu pipen. Bietet mehr Möglichkeiten, aber kommt zu einem Preis.
- Der Elastic-Stack ist eine Infrastruktur, die man aufsetzen und
pflegen will. Im *Allgemeinen* läuft der extrem robust, aber wenn man
den updaten möchte oder *irgendwo* innerhalb des technischen Zoos dann
doch mal Probleme auftreten, wird es schnell anstrengend.
Viele Grüße,
Kristian
--
Kristian Rink
https://dm.zimmer428.net/
https://www.flickr.com/photos/z428
https://twitter.com/kr428
https://social.tchncs.de/@z428
"Withering under words you told me:
Comfort in the great machine."