ELK簡介:
ELK是Elasticsearch+Logstash+Kibana簡稱
- Elasticsearch:是一個分布式的搜索和分析引擎,可以用於全文檢索、結構化檢索和分析,並能將這三者結合起來。Elasticsearch 基於 Lucene 開發,現在是使用最廣的開源搜索引擎之一。
- Logstash: 簡單來說就是一根具備實時數據傳輸能力的管道,負責將數據信息從管道的輸入端傳輸到管道的輸出端,與此同時這根管道還可以讓你根據自己的需求在中間加上濾網,Logstash提供了很多功能強大的濾網以滿足你的各種應用場景。
- Kibana: 是一個開源的分析與可視化平台,設計出來用於和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的數據,使用各種不同的圖標、表格、地圖等,kibana能夠很輕易的展示高級數據分析與可視化。
ELK實現的日志采集的核心是,通過 logstash 將應用系統的日志通過 input 收集,然后通過內部整理,通過 output 輸出到 Elasticsearch 中,其實就是建立了一個 index,然后 kibana作為可視化平台,將 ES 的index進行輸出到平台,通過圖表的方式進行展示。
環境准備:
JDK: 1.8
OS: windows
elasticsearch:6.5.1
kibana:6.5.1
logstash:6.5.1
環境搭建:
其中 elasticsearch 與 kibana 的搭建可以參考 https://www.cnblogs.com/wuzhenzhao/p/12889339.html , 在這里就不贅述了。
然后分別啟動 Elasticsearch 、 kibana 。
1.Logstash 的安裝包進行解壓。然后在config文件夾下添加 test.conf 文件內容:
input{ tcp { mode => "server" host => "0.0.0.0" #我這里是本地 port => 9061 #開放這個端口進行采集 codec => json_lines # 編解碼器 有的版本需要肚子安裝 } } output{ elasticsearch{ #es地址 hosts=>["127.0.0.1:9200"] # 在es里產生的index的名稱 index => "springboot-study-%{+YYYY.MM.dd}" } stdout{codec => rubydebug} }
啟動 logstash:./logstash -f ../config/test.conf
上面是采用 TCP的方式去采集日志,還可以指定日志文件, 修改 input,linux系統還需要給該日志文件授權:
input{ file { path => "D:/logs/web_info.log" type => "systemlog" start_position => "beginning" stat_interval => "3" } }
Logstash 的input 、output、以及這里沒有提及的 filter都是核心。有興趣的可以深入了解。
2. 添加依賴:
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>4.9</version>
</dependency>
3.在resources下添加logback-spring.xml 只需把下面ip地址修改一下即可
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml" />
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>127.0.0.1:9061</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<root level="INFO">
<appender-ref ref="LOGSTASH" />
<appender-ref ref="CONSOLE" />
</root>
</configuration>
4. application.properties 修改配置:
logging.config = classpath:logback-spring.xml
5.然后啟動springboot ,在對應的controller 里面打印一些日志,然后就可以看到啟動 Logstash 的 控制台有所輸出,就可以了。
6.登錄kibana http://localhost:5601/ ,點擊導航欄 monitoring 模塊 ---> 點擊 Indices :

可以看到在 es 里面已經產生該 index、說明日志成功收集。點擊 Management 里面的 Index Patterns:

點擊 Create index pattern 輸入我們在 Logstash 里面配置的 index 的名稱進行匹配搜索

點擊 next step:

點擊創建,成功后顯示如下界面:

然后回到 Discover ,保持服務是啟動狀態,可以看到

對於 Kibana 提供了很多的可視化圖表:

我們選一個柱狀圖:

選擇 index:

選擇完以后,然后需要構建 X、Y軸(多訪問幾次,圖示效果更好):

在這里我們可以添加不同的統計方式,然后如上圖,我們可以點擊右上角的 save 按鈕,將我們構造出來的 視圖 保存起來,然后可以通過 Dashboard 將這些試圖組裝到一個儀表盤上進行展示。
