背景:程序模塊部署,每個模塊都有自己的日志存放到本地,當需要進行排查問題的時候,可能需要到各個服務器上去下載日志,然后進行排查,費時。
方案:使用ELK方案,①采用flume采集日志,然后將日志存入消息隊列或直接在程序中使用logback連接kafka;②使用logstash從kafka中讀取數據,進行一定的處理;③logstash處理數據后進入到ElasticSearch中;
我們這邊采用的開發框架基本都是基於springboot和springcloud等一些列的框架,我們部署的程序模塊會越來越多,不想每一次部署模塊的時候都去加flume相關配置進行采集日志,如果到新的服務器上部署的時候還得重新安裝flume,我們使用框架中的日志框架采用logback,支持與ELK的集成方案。
架構圖參考地址:https://www.cnblogs.com/wangzhuxing/p/9665905.html
Logback+kafka+ELK的搭建參考:https://www.jianshu.com/p/d1be3364f32d,里面有詳細的搭建情況,采用的springcloud可以進行服務跟蹤sleuth。
引入logback進行日志記錄,引入lombok使用@Log4j注解,引入logstash-logback-encoder進行日志輸出格式化為json字符串輸出,引入logback-kafka-appender與kafka集成。