ELK簡介
ELK是Elasticsearch+Logstash+Kibana簡稱
Elasticsearch 是一個分佈式的搜索和分析引擎,可以用於全文檢索、結構化檢索和分析,並能將這三者結合起來。Elasticsearch 基於 Lucene 開發,現在是使用最廣的開源搜索引擎之一。
Logstash 簡單來說就是一根具備實時數據傳輸能力的管道,負責將數據信息從管道的輸入端傳輸到管道的輸出端,與此同時這根管道還可以讓你根據自己的需求在中間加上濾網,Logstash提供了很多功能強大的濾網以滿足你的各種應用場景。
Kibana 是一個開源的分析與可視化平臺,設計出來用於和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引裏的數據,使用各種不同的圖標、表格、地圖等,kibana能夠很輕易的展示高級數據分析與可視化。
ELK下載安裝
可以去官網下載中心下載安裝:https://elasticsearch.cn/download/(我這裏下載的6.2.2,logstash下載zip版本)
需要提前安裝JDK1.8。
ELK解壓安裝
將三個壓縮包fen別解壓
啓動es 在..elasticsearch-6.2.2\bin\ 目錄下 啓動 elasticsearch.bat ,瀏覽器請求:http://localhost:9200/
啓動Kibana 在..kibana-6.2.2-windows-x86_64\bin\ 目錄下 啓動 kibana.bat ,無需修改任何配置。瀏覽器訪問http://localhost:5601/
解壓 logstash在 config 目錄下 創建文件logstash.conf
input {
tcp {
#模式選擇爲server
mode => "server"
#ip和端口根據自己情況填寫,端口默認4560,對應下文logback.xml裏appender中的destination
host => "localhost"
port => 4560
#格式json
codec => json_lines
}
}
filter {
#過濾器,根據需要填寫
}
output {
elasticsearch {
action => "index"
#這裏是es的地址,多個es要寫成數組的形式
hosts => "localhost:9200"
#用於kibana過濾,可以填項目名稱
index => "applog"
}
}
在bin 目錄下 打開 cmd 命令窗口 執行
logstash.bat -f ../config/logstash.conf
報錯
解決:打開logstash-6.2.2\bin 目錄 下 logstash.bat 52 行 將 %CLASSPATH% 加上雙引號
重新啓動
不報錯就是啓動成功。這樣 ELK 日誌收集系統就搭好了。
建一個 springboot 項目 修改 logback.xml 添加
<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>localhost:4560</destination>
<!-- encoder必須配置,有多種可選 -->
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<root level="TRACE">
<appender-ref ref="stash" />
</root>
注意:destination 要與前邊配置文件中的相同。
pom.xml 中添加依賴
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.1</version>
</dependency>
@ApiOperation(value = "查看舉報列表", notes = "根據用戶code 獲取舉報列表 reportStatus 不需要傳值")
@PostMapping(value = "/list")
public Wrapper reportList(@RequestBody ReportInfoBaseListDto listDto) {
log.info("查看舉報列表,參數:==>>" + listDto);
try {
List<Map<String, Object>> list = reportInfoService.queryListByUserInstitutionCode(listDto);
PageInfo pageInfo = new PageInfo(list);
return WrapMapper.wrap(Wrapper.SUCCESS_CODE, Wrapper.SUCCESS_MESSAGE, pageInfo);
} catch (Exception e) {
e.printStackTrace();
return WrapMapper.wrap(Wrapper.ERROR_CODE, e.getMessage());
}
}
這裏使用 lombok controller 添加 @Log zhu註解
啓動項目請求該接口。
運行測試用例後回到kibana界面,Management --> Index Patterns,填入Logstash配置中index的值,此處爲applog
第二步 此處選擇"@timestamp"
回到Discover
這樣日誌就收集過來了。