ELK(Elasticsearch + Logstash + Kibana) 日志分析平台搭建及 SpringBoot 如何实时发送日志存储到 ELK 平台
说明
- Elasticsearch, Logstash,Kibana 版本都是5.3.0
- SpringBoot 集成 ELK,实际上指的就是 SpringBoot 与 Logstash 的整合
- Elasticsearch 负责数据的存储,Logstash 负责数据的接受和数据的发送,相当于一个中转站,Kibana 负责数据的展示,查询
- SpringBoot 项目是我们产生日志并且需要存储和分析的项目
- SpringBoot 我还是使用的默认的 logback 日志系统,当然也可以采用 log4j,不过我还是比较喜欢 logback,性能好,配置少,有颜色
Elasticsearch 集群搭建
略
Logstash 安装
- 官网下载 Logstash
- 解压
- 添加配置文件 log.config
1 | input { |
总的来说,配置文件里由 input,filter,output,这里我没有特别复杂的需求,filter就没有配置
我这里有三个input,但是都是 tcp 类型的
意思配置了三个input,分别监听192.168.10.78(就是安装logstash的机器)的4560,4561,和4568端口,有数据发送过来的话就进行output处理
这里我配置了3个type,这个type也就是elasticsearch里索引的type,并且该type可作为参数在output里判断进行不同的处理
codec 是的对日志数据进行处理的插件,这里是 json_lines
所以需要安装插件
1 | sh bin/logstash-plugin install logstash-codec-json_lines |
elasticsearch:hosts es的http地址和端口
index 是创建的索引名
如果要配置索引模板的话,可以添加以下配置
manage_template => true
template_name => “template_name”
template_overwrite => true
template => “/usr/local/path.json”
配置好了,我们检验下配置文件是否正确
1 | sh /app/logstash-5.3.0/bin/logstash -f /app/logstash-5.3.0/config/log.config -t |
没有问题的话就可启动了,后台启动的就用 nohup
1 | sh /app/logstash-5.3.0/bin/logstash -f /app/logstash-5.3.0/config/log.config |
启动成功的话,9600端口可以获取到 logstash 的相关信息
SpringBoot 集成 Logstash
- 添加依赖:
1 | <dependency> |
- 添加配置 logstash 文件
在 resources 下直接添加 logback.xml 文件即可
1 |
|
这里我是使用的是 SpringBoot 自带的 logback 日志
SpringBoot 默认会读取 resources 目录下的 logback.xml 作为配置文件,别问我怎么知道的(我特地查看了源码:org.springframework.boot.logging.logback.LogbackLoggingSystem,”logback-test.groovy”, “logback-test.xml”, “logback.groovy”, “logback.xml”这些文件检测到都会读取其中的配置的)
配置文件里我只配置了 一个Appender,就是net.logstash.logback.appender.LogstashTcpSocketAppender,用来输出日志到logstash的,并且级别是 INFO
destination 指的就是 logstash 的地址
encoder 就配置LogstashEncoder不要变
再把 SpringBoot默认的配置引入base.xml
好了,SpringBoot 集成 Logstash 完毕
注 :后来我想用 javaConfig 去配置 SpringBoot和Logstash,不过没有成功,哪位大佬看到这个信息,可以给我留言下怎么配置
xml,也很方便,打包部署后可以作为配置文件修改
那么,这个时候启动项目,elasticsearch里面就会看到有新的索引数据了
Kibana 安装
- 其实 Kibana 非必须安装,只是用来统计数据和查询数据的,用来提供一个可视化的界面
- 下载 Kibana
- 修改配置文件 kibana.yml
server.port: 5668
server.host: “0.0.0.0”
elasticsearch.url: “http://localhost:9268“ - 后台启动
- 访问kibana的地址即可