案例使用docker 安装elk,然后使用springboot连接logstash推送日志,发送到es,然后kibana可视化展示
首先需要安装docker 以及docker客户端portainer,没有安装的小伙伴看这里
安装docker,以及portainer可视化工具
docker安装好之后,开始拉取elk镜像
docker pull sebp/elk
然后查看镜像 docker images
拉取成功之后,直接启动elk镜像
docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -d --name elk sebp/elk
-p 端口映射 5601 kibana 端口 9200 es端口 5004 logstash 端口
启动成功访问 ip:9200 es页面,这里用了es管理工具 可以通过谷歌商店搜索下载,需要的话自己研究下吧
启动成功访问 ip:5601 kibana 页面
elk启动成功并不能直接连接springboot,还需要改点配置,
我们使用命令进入elk容器
docker exec -it 容器名称 /bin/bash/
ll命令查看容器内目录结构,
只需要改一个地方就是logstash的配置文件 ,文件位置在 /etc/logstash/conf.d/下
我在这里直接贴这个文件的配置
我们这里必须将 inqut 配置为tcp!!! 那里容器默认是beats采集(beats 它也是Elastic Stack 技术栈中的一员,是专门用作数据采集,性能高于logstash,由它去做数据采集,然后发送到Elasticsearch,或者发送到logstash对数据做处理之后在发送到Elasticsearch,最后由kibana展示。现在网上有一种说法叫做ELKB,这里的B就是指的beats,为了捕捉(捕获)数据,Elastic提供了各种Beats:-Filebeat,Packetbeat,Metricbeat,Auditbeat,Heartbeat,Winlogbeat和Functionbeat ),
如果是beats的话,需要下载安装filebeat 数据由filebeat进行采集,然后输入到logstash,然后由logstash输出到Elasticsearch,然后在到kibana进行展示,这里我不采用filebeat来收集数据,我们直接将数据发送到logstash
这个配置改了之后。重新启动elk容器
记录一下容器内的配置文件路径
docker exec -it 容器名称 /bin/bash 进入容器后。
cd /opt/
三个组件的目录都在这里,我们可以cd进去conf目录。有需要的话就修改它的配置文件
那为什么logstash的配置文件却在/etc/logstash/conf.d/中呢?那是因为在
/opt/logstash/config/pipelines.yml 文件中将/etc/logstash/conf.d/下的文件做为logstash的配置文件
配置文件搞明白,后面就可以根据自己的情况修改对应的文件了,或者我们可以将容器中需要更改的文件cp 到宿主机,然后重新启动容器,在启动容器时进行-v参数的挂载目录,docker cp 容器名称:容器内目录路径 宿主机路径
到这里elk就ok了,接下来看springboot如何配置
1.项目中使用很简单,pom映入jar
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.3</version>
</dependency>
2.创建一个配置文件logback-spring.xml,直接贴代码了
<?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">
<!--配置logstash的ip和端口,-->
<destination>220.108:5044</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>
<destination>220.108:5044</destination>
这里换成你自己logstash的地址即可
3.然后在application.properties 配置
logging.config=classpath:logback-spring.xml
这就ok了,只需要在项目中打印日志即可。