日志存儲系統常用技術方案有兩種:一是log4j/logback+mongodb的方式,一種是基於ELK的日志存儲系統。
日志一般存儲在數據庫和文件系統中。日志數據要和生產正式庫分開存儲,否則會影響正式庫的運行,帶來隱患。另外,為了防止日志存儲性能問題,后期可以考慮采用異步的消息隊列形式進行存儲。
下面詳細講解。
1.便捷的日志存儲方式log4j+mongodb
1)安裝和配置簡介
需要引入的jar包有:Mongo Java driver、Log4J(1.2.16以上版本)、log4mongo-java,通過log4j.properties屬性文件配置,整合log4j和mongodb。log4j可直接寫數據到mongodb中。
2)日志分析和查看
可通過mongovision這個web客戶端進行日志的查看和分析。mongovision,使用extjs作為前端,體驗較好,需要java7及以上版本。
2.基於ELK的日志系統
ELK=ElasticSearch+LogStash+Kibana
日志數據流如下:應用將日志落地在本地文件,部署在每台服務器上的FileBeat負責收集日志,然后將日志發送給LogStash;LogStash對日志進行處理解析等操作;然后將處理后的Json對象傳遞給ElasticSearch,進行落地並進行索引處理;最后通過Kibana來提供web界面,來查看日志等。
對於日志數據流特別大的情況,LogStash會造成擁堵,這個時候可以使用消息隊列來進行緩沖,比如kafka。新的流程如下:
--------------------------------------------------------------------
PS: 歡迎關注公眾號"Devin說",會不定期更新Java相關技術知識。
--------------------------------------------------------------------