springboot集成elk实现日志采集可视化

一、安装ELK

安装ELK组件请参考我这篇博客:windows下安装ELK(踩坑记录)_windows上安装elk教程-CSDN博客

这里不再重复赘述。

二、编写logstash配置

ELK组件均安装好并成功启动,进入到logstash组件下的config文件夹,创建logstash.conf配置文件

logstash.conf的配置如下

input{

tcp{

port =>9601

mode => "server"

tags => ["tags"]

host => "localhost"

codec => json_lines

}

}

output{

elasticsearch{

hosts => ["http://localhost:9200"]

index => "elk"

}

stdout{

codec => rubydebug

}

}

三、重新启动ELK组件

1.启动elasticsearch

进入的bin目录下 D:\devSofts\ELK\elasticsearch-8.12.0\bin

双击elasticsearch.bat

2.启动kibana

进入bin目录下 D:\devSofts\ELK\kibana-8.12.0\bin,双击kibana.bat

3.启动logstash

cmd进入bin目录

执行命令 logstash.bat -f D:\devSofts\ELK\logstash-8.12.0\config\logstash.conf (后面的路径根据自己的安装位置修改)

四、kibana创建elk索引

打开kibana界面

点击Management

点击kibana Data Views

创建elk*

五、创建demo

1.使用idea创建一个springboot项目,记得勾选spring web

2.引入pom依赖

复制代码
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <scope>provided</scope>
</dependency>
<!--集成elk相关依赖,往elk平台输出日志-->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.4.12</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.4.12</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-access</artifactId>
    <version>1.3.8</version>
</dependency>
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>7.4</version>
</dependency>

在resources文件夹下添加 logback.xml,内容如下

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 日志存放路径 -->
    <property name="log.path" value="logs/restful" />
   <!-- 日志输出格式 -->
    <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />

    <!-- 控制台输出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
       <encoder>
          <pattern>${log.pattern}</pattern>
       </encoder>
    </appender>

    <!-- 系统日志输出 -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/info.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
       <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
          <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
          <!-- 日志最大的历史 60天 -->
          <maxHistory>60</maxHistory>
       </rollingPolicy>
       <encoder>
          <pattern>${log.pattern}</pattern>
       </encoder>
       <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>INFO</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/error.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
          <!-- 日志最大的历史 60天 -->
          <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>ERROR</level>
          <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
          <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--ELK日志配置-->
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>localhost:9601</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
            <customFields>{"serviceName":"TestApp"}</customFields>
        </encoder>
    </appender>


    <!-- 系统模块日志级别控制  -->
    <logger name="prj" level="info" />
    <!-- Spring日志级别控制  -->
    <logger name="org.springframework" level="warn" />

    <root level="info">
       <appender-ref ref="console" />
    </root>
    
    <!--系统操作日志-->
    <root level="info">
        <appender-ref ref="file_info" />
        <appender-ref ref="file_error" />
        <appender-ref ref="LOGSTASH" />
    </root>
</configuration>

启动服务后浏览器请求http://localhost:8888/hello

日志收集如下

相关推荐
Lw老王要学习7 天前
Linux架构篇、第四章_ELK与EFK-7.17.9的日志管理
linux·运维·elk·架构·云计算
舌尖上的五香16 天前
ELK格式化处理日志数据并分析
elk
爱吃龙利鱼21 天前
elk中kibana一直处于可用和降级之间且es群集状态并没有问题的解决方法
大数据·elk·elasticsearch
yuzhangfeng1 个月前
【日志体系】ELK Stack与云原生日志服务
elk·云原生·云计算
小黑蛋学java1 个月前
Elasticsearch 官网阅读学习笔记01
elk·学习笔记
码农不屈的一生1 个月前
docker部署elk
运维·elk
MarkHD1 个月前
第十八天 - ELK日志体系集成 - 自定义Logstash插件 - 练习:分布式日志分析平台
分布式·elk
小黑蛋学java1 个月前
Elasticsearch 学习规划
elk
小黑蛋学java1 个月前
Elasticsearch中的基本全文搜索和过滤
elk
小黑蛋学java1 个月前
Elasticsearch单节点安装手册
elk