Logging von Java-App zu ELK, ohne dass Protokolle analysiert werden müssen
Ich möchte Protokolle von einer Java-App an ElasticSearch senden, und der herkömmliche Ansatz scheint darin zu bestehen, Logstash auf dem Server einzurichten, auf dem die App ausgeführt wird, und die Protokolldateien (mit Regex ...!) Mit Logstash zu analysieren und in diese zu laden ElasticSearch.
Gibt es einen Grund, warum dies so gemacht wird, anstatt nur log4J (oder logback) einzurichten, um Dinge im gewünschten Format direkt in einem Protokollkollektor zu protokollieren, der dann asynchron an ElasticSearch gesendet werden kann? Es scheint mir verrückt, mit Grok-Filtern herumzuspielen, um mit mehrzeiligen Stack-Traces umzugehen (und CPU-Zyklen beim Parsing von Protokollen zu brennen), wenn die App selbst das gewünschte Format überhaupt nur protokollieren könnte?
Bei einer tangentialen Notiz für Apps, die in einem Docker-Container ausgeführt werden, empfiehlt es sich, sich direkt bei ElasticSearch anzumelden, da nur ein Prozess ausgeführt werden muss.