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

日志收集如下

相关推荐
lisanmengmeng1 天前
搭建elk环境并接入frostmourne,实现监控报警效果(e二)
elk·监控·日志·日志监控
小白一枚131 天前
[学习笔记]Kafka 篇:从原理到实战的一站式指南
大数据·运维·elk·kafka·个人开发
NJCloud2 天前
ELK企业级日志分析平台(四)——基于 ELFK + Kafka 的日志采集与传输平台部署实践
linux·运维·分布式·elk·kafka
lisanmengmeng2 天前
搭建elk环境并接入frostmourne,实现监控报警效果(一)
运维·elk·jenkins
艾伦_耶格宇3 天前
【ELK】-5 kibana和filebeat
linux·运维·ubuntu·elk
艾伦_耶格宇4 天前
【ELK】-4 logstash的搭建及操作
linux·运维·ubuntu·elk
小张同学a.8 天前
ELK企业级日志分析平台3——ES数据备份 & 集群监控 & ELFK+Kafka 架构部署
linux·运维·elk·elasticsearch·架构·kafka·filebeat
Aision_9 天前
实习手记 Day:从 ELK 到 Agent 的“最后一公里”——告警消费与上下文富化
运维·人工智能·web安全·elk·网络安全·安全威胁分析
阿标在干嘛24 天前
政策快报平台日志系统的3次演进:从文件到ELK到告警
运维·elk·jenkins
AAA@峥1 个月前
CentOS7 搭建 ELK 企业级日志集群:从部署到日志可视化完整实战
运维·elk·centos