在微服務架構下,微服務被拆分成多個微小的服務,每個微小的服務都部署在不同的服務器實例上,當我們定位問題,檢索日志的時候需要依次登錄每台服務器進行檢索。
這樣是不是感覺很繁瑣和效率低下。所以我們還需要一個工具來幫助集中收集、存儲和搜索這些跟蹤信息。
集中化管理日志后,日志的統計和檢索又成為一件比較麻煩的事情,一般我們使用grep、awk和wc等Linux命令能實現檢索和統計,但是對於要求更高的查詢、排序和統計等要求和龐大的機器數量依然使用這樣的方法難免有點力不從心。
開源實時日志分析ELK平台能夠完美的解決我們上述的問題,ELK由ElasticSearch、Logstash和Kiabana三個開源工具組成。官方網站:https://www.elastic.co/products
-
Elasticsearch是個開源分布式搜索引擎,它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
-
Logstash是一個完全開源的工具,他可以對你的日志進行收集、過濾,並將其存儲供以后使用(如,搜索)。
-
Kibana 也是一個開源和免費的工具,它Kibana可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助您匯總、分析和搜索重要數據日志。
從左邊看起,每一台webserver上都會部署一個logstash-agent,它的作用是用類似tailf的方式監聽日志文件。日志需要定義統一的格式,利用log4j2定義好統一的日志格式,在配置文件input中需要指定收集的日志文件地址,利用logstash過濾日志內容。
然后把新添加的日志發送到redis隊列里面,logstash-indexer負責從redis相應的隊列里面取出日志,對日志進進行加工后輸出到elasticsearch中,elasticsearch會根據要求對日志進行索引歸集。
最后用戶可以通過kibana來查看和分析日志。
參考:https://my.oschina.net/itblog/blog/547250