先看數據流圖,然后一一給大家解釋
這個方案是將日志直接從應用代碼中將日志輸出到redis中(注意,是應用直接連接redis進行日志輸出),redis充當一個緩存中間件有一定的緩存能力,不過有限,因為使用的是內存,內存使用完了就會出現阻塞失敗等現象從而導致日志丟失。
接下來logstash從redis中讀取日志然后批量推送ES,logstash有一定的堆積能力,可以控制線程以及批量推送ES日志數量,不過不會像filebeat有感知壓力的功能。
微服務應用對redis的鏈接為弱引用,成功失敗都無所謂。
這個方案中中間任意環節出問題都會導致日志輸出問題。
而且可能會造成redis-logstash-ES整個鏈路癱瘓
因為redis和logstash堆積能力實在有限,如果將中間鏈路環節使用其他中間件會好的多。
這個方案的優點就是在logback.xml文件配置好之后什么都不用管,直接去查日志就可以了,性能跟得上redis2GB內存1天處理1.5億條日志沒問題。