开发者

SpringBoot整合ELK实现日志监控

开发者 https://www.devze.com 2024-11-06 10:18 出处:网络 作者: 不惑_
目录ELK 安装汇总新建SpringBoot项目pom依赖新建或修改application.yml创建日志配置文件创建一个测试类启动项目Kibana配置模拟数据请求控制台日志Kibana数据索引规则配置索引文档查看ELK 安装汇总
目录
  • ELK 安装汇总
  • 新建SpringBoot项目
    • pom依赖
    • 新建或修改application.yml
    • 创建日志配置文件
    • 创建一个测试类
  • 启动项目
    • Kibana配置
      • 模拟数据请求
      • 控制台日志
      • Kibana数据
      • 索引规则配置
      • 索引文档查看

    ELK 安装汇总

    可参考一下安装内容,过程亲测可用。

    Centos下安装Kibana(保姆级教程)

    CentOS下安装ElasticSearch7.9.2(无坑版)

    Logstash 安装与部署(无坑版)

    新建SpringBoot项目

    pom依赖

    <?XML version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    											   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    	<modelVersion>4.0.0</modelVersion>
    	<parent>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-parent</artifactId>
    		<version>2.6.1</version>
    		<relativePath/> <!-- lookup parent from repository -->
    	</parent>
    	
    	<groupId>com.example</groupId>
    	<artifactId>spring-boot-mysql</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<name>spring-boot-mysql</name>
    	<description>Spring Boot with MySQL</description>
    	
    	<properties>
    		<Java.version>1.8</java.version>
    	</properties>
    	
    	<dependencies>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-data-jpa</artifactId>
    		</dependency>
    		
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    		</dependency>
    		
    		<!--连接logstash相关依赖-->
    		<dependency>
    			<groupId>net.logstash.logback</groupId>
    			<artifactId>logstash-logback-encoder</artifactId>
    			<version>6.6</version>
    		</dependency>
    
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    			<scope>runtime</scope>
    		</dependency>
    		
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-test</artifactId>
    			<scope>test</scope>
    		</dependency>
    		
    		<dependency>
    			<groupId>org.projectlombok</groupId>
    			<artifactId>lombok</artifactId>
    			&编程lt;version>1.18.16</version>
    			<scope>compile</scope>
    		</dependency>
    	</dependencies>
    
    	<build>
    		<plugins>
    			<plugin>
    				<groupId>org.springframework.boot</groupId>
    				<artifactId>spring-boot-maven-plugin</artifactId>
    			</plugin>
    		</plugins>
    	</build>
    
    </project>
    

    新建或修改application.yml

    这个操作随意,可以不改端口号

    server:
      port: 8088
    

    创建日志配置文件

    在项目的 resources 目录下创建 logback-spring.xml 文件,也就是日志输出配置文件SpringBoot默认的使用的logback日志,必须叫这个名字!!!

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration>
    <configuration>
        <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
        <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
        <!--应用名称-->
        <property name="APP_NAME" value="logstash"/>
        <!--日志文件保存路径-->
        <property name="LOG_FILE_PATH" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/logs}"/>
        <contextName>${APP_NAME}</contextName>
        <!--每天记录日志到文件appender-->
        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${LOG_FILE_PATH}/${APP_NAME}-%d{yyyy-MM-dd}.log</fileNamePattern>
                <maxHistory>30</maxHistory>
            </rollingPolicy>
            <encoder>
                <pattern>${FILE_LOG_PATTERN}</pattern>
            </encoder>
        </appender>
        <!--输出到logstash的appender-->
        <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashtcpSocketAppender">
            <!--可以访问的logstash日志收集的ip和端口-->
            <destination>你的ip:端口号</destination>
            <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
        </appender>
        <root level="INFO">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="FILE"/>
            <appender编程-ref ref="LOGSTASH"/>
        </root>
    </configuration>
    

    创建一个测试类

    package com.example.demo.controller;
    
    import lombok.extern.slf4j.Slf4j;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    @Slf4jwww.devze.com
    public class HelloController {
        
    //    private static final Logger logger = LoggerFactory.getLogger(HelloController.class);
        
        @GetMapping("/hello")
        public String hello() {
         android   log.warn("HelloController执行-----log.warn");
            log.info("HelloController执行-----log.info");
            log.error("HelloController执行-----log.error");
    //        logger.info("HelloController执行hello");
            return "hello";
        }
    }

    启动项目

    SpringBoot整合ELK实现日志监控

    Kibana配置

    SpringBohttp://www.devze.comot项目启动后,可以看到默认已经创建出索引文件

    SpringBoot整合ELK实现日志监控

    索引数据。

    SpringBoot整合ELK实现日志监控

    模拟数据请求

    http://localhost:8088/hello

    SpringBoot整合ELK实现日志监控

    控制台日志

    SpringBoot整合ELK实现日志监控

    Kibana数据

    SpringBoot整合ELK实现日志监控

    索引规则配置

    kibana中,创建一个索引规则

    点击堆栈管理Stack Mangement

    SpringBoot整合ELK实现日志监控

    点击索引规则Index pattern

    SpringBoot整合ELK实现日志监控

    然后创建索引规则

    通过输入的 log-goboy-dev-* 筛选一条匹配的索引

    SpringBoot整合ELK实现日志监控

    选择时间参数作为@timestamp通配符字段,然后点击右下角的创建索引模式Create index pattern;

    SpringBoot整合ELK实现日志监控

    创建完成后可以看到索引的相关详细信息

    SpringBoot整合ELK实现日志监控

    索引文档查看

    点击Discover

    SpringBoot整合ELK实现日志监控

    通过Refresh按钮进行数据的查看,左侧可进行文档过滤。

    通过索引文档内容可以知道,SpringBoot控制台打印的相关日志信息。

    文档中包含:时间、日志输出的结果信息、文档的版本、日志的级别、线程名、端口、执行的方法都全类名、文档id、文档索引名等

    SpringBoot整合ELK实现日志监控

    注意!!!

    一定要注意端口号的开放,配置好云服务器的安全组端口开放!!!

    以上就是SpringBoot整合ELK实现日志监控的详细内容,更多关于SpringBoot ELK日志监控的资料请关注编程客栈(www.devze.com)其它相关文章!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号