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
这样日志就收集过来了。