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

日志收集如下

相关推荐
昱宸星光12 天前
ELK日志收集平台搭建
elk
认真的薛薛13 天前
2-监控:elk采集各种日志并出图
前端·chrome·elk
认真的薛薛14 天前
1-监控:elk部署与概念
elk
Sleep`18 天前
基于Suricata与ELK的网络流量检测
elk·数据可视化·suricata·流量
张小凡vip19 天前
从ELK到EFK日志管理架构的演进与实战部署
elk·架构·efk
叱咤少帅(少帅)24 天前
基于ELK 收集K8S的日志
elk·容器·kubernetes
一叶飘零_sweeeet1 个月前
ELK 搭建实战:从 0 到 1 打通日志收集、分析与可视化
elk·kibana·es·logstash
黑棠会长1 个月前
ELK 安全可观测系列开篇:把日志做成“防弹衣”的一部分
安全·elk·架构
程序员泠零澪回家种桔子1 个月前
微服务日志治理:ELK 栈实战指南
后端·elk·微服务·云原生·架构
虫小宝1 个月前
淘宝返利软件的日志审计系统:Java Logback+ELK Stack实现操作日志的可追溯与可视化分析
java·elk·logback