sprinboot 集成elk 日志收集

案例使用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

sprinboot 集成elk 日志收集_第1张图片
-p 端口映射 5601 kibana 端口 9200 es端口 5004 logstash 端口

启动成功访问 ip:9200 es页面,这里用了es管理工具 可以通过谷歌商店搜索下载,需要的话自己研究下吧
sprinboot 集成elk 日志收集_第2张图片

启动成功访问 ip:5601 kibana 页面

sprinboot 集成elk 日志收集_第3张图片
elk启动成功并不能直接连接springboot,还需要改点配置,
我们使用命令进入elk容器

docker exec -it 容器名称 /bin/bash/

sprinboot 集成elk 日志收集_第4张图片
ll命令查看容器内目录结构,
sprinboot 集成elk 日志收集_第5张图片
只需要改一个地方就是logstash的配置文件 ,文件位置在 /etc/logstash/conf.d/下sprinboot 集成elk 日志收集_第6张图片

我在这里直接贴这个文件的配置
sprinboot 集成elk 日志收集_第7张图片
我们这里必须将 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/
sprinboot 集成elk 日志收集_第8张图片
三个组件的目录都在这里,我们可以cd进去conf目录。有需要的话就修改它的配置文件
那为什么logstash的配置文件却在/etc/logstash/conf.d/中呢?那是因为在
/opt/logstash/config/pipelines.yml 文件中将/etc/logstash/conf.d/下的文件做为logstash的配置文件
sprinboot 集成elk 日志收集_第9张图片

配置文件搞明白,后面就可以根据自己的情况修改对应的文件了,或者我们可以将容器中需要更改的文件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了,只需要在项目中打印日志即可。

最后在kibana上创建索引就可以看到日志了,我写累了。。
sprinboot 集成elk 日志收集_第10张图片

sprinboot 集成elk 日志收集_第11张图片

你可能感兴趣的:(springboot整合篇)