Springboot+ Logstash + Kibana ELK整合笔记(mac版)

Springboot+Logstash+ Kibana+Elsticsearch ELK整合笔记

文章的前提是你已经搭建好了Logstash、Kibana、Elsticsearch的环境,很简单网上也有很多教程,如有不懂也可以留言问我
本人是使用docker启动的Kibana和和ES,方便管理节点,如有兴趣也可以留言

  • 既然用到Logstash就理所当然的要引入相关jar包
<!-- https://mvnrepository.com/artifact/net.logstash.logback/logstash-logback-encoder -->
        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>5.2</version>
        </dependency>
  • 注意logback的版本是用的5.2这是因为pring-boot版本是2.1.1,这里如果logback版本过高会引起不兼容的问题
  • 然后配置Logstash的conf文件,在配置之前我们需要先配置下Springboot的logback文件,很简单,都给了注释,其中你主要是配置输出文件到logstash的部分,其他配置都是些日志的输出路径和格式,看你个人所需
<?xml version="1.0" encoding="UTF-8"?>
<!--该日志将日志级别不同的log信息保存到不同的文件中 -->
<configuration>
    <!-- 日志在工程中的输出位置 -->
    <property name="LOG_HOME" value="/Users/jxliu/elsticsearch/logs" />

    <!-- 日志输出格式 -->
    <property name="ENCODER_PATTERN"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} [${APP_NAME}] [%thread] %-5level [%logger] -%msg%n" />
    <contextName>${APP_NAME}</contextName>


    <!-- 控制台日志:输出全部日志到控制台 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>${ENCODER_PATTERN}</Pattern>
        </encoder>
        <!--此日志appender是为开发使用,只配置最低级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
        <!--<filter class="ch.qos.logback.classic.filter.ThresholdFilter">-->
            <!--<level>debug</level>-->
        <!--</filter>-->
    </appender>


    <!-- 为logstash输出的JSON格式的Appender -->
    <appender name="logstash"
              class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>192.168.1.177:8888</destination>
        <!-- 日志输出编码 -->
        <encoder
                class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp>
                    <timeZone>UTC</timeZone>
                </timestamp>
                <pattern>
                    <pattern>
                        {
                        "severity": "%level",
                        "service": "${springAppName:-}",
                        "trace": "%X{X-B3-TraceId:-}",
                        "span": "%X{X-B3-SpanId:-}",
                        "exportable": "%X{X-Span-Export:-}",
                        "pid": "${PID:-}",
                        "thread": "%thread",
                        "class": "%logger{40}",
                        "rest": "%message"
                        }
                    </pattern>
                </pattern>
            </providers>
        </encoder>
    </appender>

    <!--输出com.example.demo包下的日志-->
    <logger name="com.example.demo" level="WARN" />
    <!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="console" />
        <appender-ref ref="logstash" />
    </root>

</configuration>
  • 然后需要配置你的Logstash了,这里是我的一些配置
  • 首先为了不影响以前的配置,这里我在bin目录重新建了一个conf文件:std_std_es.conf.conf
  • 在这里插入图片描述
  • 这里将std_std_es.conf.conf贴出来,里面有备注
input {
    tcp {
        # IP地址
        host => "192.168.1.177"
        # 端口号
        port => 8888
        # 建议写server
        mode => "server"
        tags => ["tags"]
        # 定义日志的格式为json,这里需要注意,如果没有json_lines,需要安装json_lines插件
        # 安装命令,进入bin目录:./logstash-plugin install logstash-codec-json_lines
        codec => json_lines
    }
}
output {
    elasticsearch {
        hosts => "http://localhost:9200"
        # 定义索引的名称,跟kibana里的对应
        index => "springboot-logstash-%{+YYYY.MM.dd}"
    }
    stdout{
        codec => rubydebug
    }
}
  • 然后进入bin目录运行命令启动logstash
  • sudo ./logstash -f std_std_es.conf.conf
  • 然后启动你的Springboot,做一些测试案例
  • 在这里插入图片描述
  • 代码贴出来
package com.example.demo;

import org.apache.log4j.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootElkApplicationTests {
    @Test
    public void contextLoads() {
    }

    private Logger logger = Logger.getLogger(getClass());

    @Test
    public void test() throws Exception {

        for(int i=0;i<100;i++) {
            logger.info("输出info日志");
            logger.debug("输出debug日志");
            logger.error("输出error日志");
            logger.warn("输出warn日志");
        }
    }
}

  • 启动你的logstash,成功后会有Successfully提示,下面会输出你项目的log日志

在这里插入图片描述

  • 然后启动你的Kibana
  • 在这里插入图片描述
  • 点击右侧创建索引,会看到一个索引名字,跟你在conf文件里配置的名字一样
  • 在这里插入图片描述
  • 点击完下一步然后去查看
  • 在这里插入图片描述
  • 至此完成,如有不懂,欢迎留言
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值