Desidero inviare i registri da un'app Java a ElasticSearch e l'approccio convenzionale sembra essere quello di impostare Logstash sul server che esegue l'app e fare in modo che logstash analizzi il log file (con regex ...!) e caricali in ElasticSearch.Registrazione dall'app Java a ELK senza necessità di log di analisi
C'è un motivo in questo modo, piuttosto che impostare log4J (o logback) per registrare le cose nel formato desiderato direttamente in un raccoglitore di registri che può quindi essere spedito a ElasticSearch in modo asincrono? Mi sembra pazzesco dover smanettare con i filtri grok per gestire le tracce di stack multiline (e masterizzare i cicli della CPU sull'analisi dei log) quando l'app stessa potrebbe semplicemente registrare il formato desiderato in primo luogo?
Su una nota tangenzialmente correlata, per le app in esecuzione in un contenitore Docker, è consigliabile eseguire il log direttamente su ElasticSearch, data la necessità di eseguire un solo processo?
Anche se si invia un documento json bello direttamente a elasticsearch, può ancora esserci una business intelligence che deve essere applicata durante il percorso. È un ottimo uso per il logstash. Inoltre, la maggior parte delle persone non vive in un mondo eterogeneo, quindi l'utilizzo di un aggregatore può essere potente. tmtowtdi, di sicuro. –
Ritengo che ciò sia principalmente dovuto a motivi di scalabilità. Se l'applicazione spinge i registri su Elasticsearch, la contropressione dovuta alla lentezza di ELasticsearch può influire sulle prestazioni dell'applicazione e se l'applicazione mette in coda molti log nella memoria principale, avrà sicuramente un effetto negativo. –