Springboot+ELK 8.x(Elasticsearch + Logstash + Kibana)

Springboot+ELK 8.x(Elasticsearch + Logstash + Kibana)

1. ES的安装(版本:8.2.2)

1.1 打开doc运行

运行es

E:
cd E:\log\elasticsearch-8.2.2
bin\elasticsearch

1.2 es启动完成后,打开另一doc

新增用户:test 密码 test123 设置成超级用户

E:
cd E:\log\elasticsearch-8.2.2
bin\elasticsearch-users useradd test -p test123 -r superuser 

1.3 浏览器访问https://localhost:9200/,输入用户名test,密码:test123(可忽略)

1.4 修改E:\log\elasticsearch-8.2.2\config\elasticsearch.yml文件

在最后加上下面内容

http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,Content-Type,X-Requested-with,Content-Length
ingest.geoip.downloader.enabled: false

1.5 关闭重启

elasticsearch

2. logstash(版本:8.2.2)

2.1 修改 logstash-sample.conf

eshosts:https://127.0.0.1:9200 es秘钥路径:E:/log/elasticsearch-8.2.2/config/certs/http_ca.crt

input {
    stdin{
    }
} 
input {
	tcp {
		host => "127.0.0.1"
		port => 9601
		codec => json_lines
	}
}
output {
    stdout{
		codec => rubydebug
    }
	elasticsearch {
        hosts => ["https://127.0.0.1:9200"]
        index => "log-%{+YYYY.MM.dd}"
        user => "test"
        password => "test123"
        ssl => true
        ssl_certificate_verification => true
        cacert => "E:/log/elasticsearch-8.2.2/config/certs/http_ca.crt"
    }
}

2.2 修改.yml

eshosts:https://127.0.0.1:9200 es秘钥路径:E:/log/elasticsearch-8.2.2/config/certs/http_ca.crt

xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.username: test
xpack.monitoring.elasticsearch.password: test123
xpack.monitoring.elasticsearch.hosts: ["https://localhost:9200"]
xpack.monitoring.elasticsearch.ssl.certificate_authority: "E:/log/elasticsearch-8.2.2/config/certs/http_ca.crt"
xpack.monitoring.elasticsearch.ssl.verification_mode: certificate

2.3 启动

doc窗口启动

E:
cd E:\log\logstash-8.2.2
bin\logstash -f config/logstash-sample.conf

3. Springboot集成logstash

3.1 maven 依赖

 <dependency>
      <groupId>net.logstash.logback</groupId>
      <artifactId>logstash-logback-encoder</artifactId>
      <version>6.4</version>
 </dependency>

3.2 在resources目录下创建logback-spring.xml

配置1

<configuration>
    <!-- 日志根目录-->
    <springProperty scope="context" name="LOG_HOME" source="logging.path" defaultValue="/tbea_mes_logs"/>
    <!-- 日志级别 -->
    <springProperty scope="context" name="LOG_ROOT_LEVEL" source="logging.level.root" defaultValue="DEBUG"/>
	<!--<property   name="LOG_ROOT_LEVEL" value="DEBUG"/>-->
    <!--  标识这个"STDOUT" 将会添加到这个logger -->
    <springProperty scope="context" name="STDOUT" source="log.stdout" defaultValue="STDOUT"/>
    <!-- 日志文件名称-->
    <property name="LOG_PREFIX" value="log" />
	 <!-- 日志文件名称-->
    <property name="LOG_PREFIX_ERROR" value="error" />
    <!-- 日志文件编码-->
    <property name="LOG_CHARSET" value="UTF-8" />
	<property name="LOG_FILE" value="${LOG_HOME}" />
    <!-- 日志文件路径+日期-->
    <property name="LOG_DIR" value="${LOG_HOME}/history/%d{yyyyMMdd}" />
    <!--对日志进行格式化-->
    <property name="LOG_MSG" value="-| [%d{yyyyMMdd HH:mm:ss.SSS}] | [%level] | [${HOSTNAME}] | [%thread] | [%logger{36}] | --> %msg|%n "/>
    <!--文件大小,默认50MB-->
    <property name="MAX_FILE_SIZE" value="50MB" />
    <!-- 配置日志的滚动时间 ,表示只保留最近 60 天的日志-->
    <property name="MAX_HISTORY" value="60"/>
    <!--输出到控制台-->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 输出的日志内容格式化-->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>${LOG_MSG}</pattern>
        </layout>
    </appender>
    <!--输出到文件-->
    <appender name="0" class="ch.qos.logback.core.rolling.RollingFileAppender">
    </appender>
    <!-- 定义 ALL 日志的输出方式:-->
	<appender name="FILE_ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志文件路径,日志文件名称-->
        <File>${LOG_FILE}/all_${LOG_PREFIX}.log</File>
        <!-- 设置滚动策略,当天的日志大小超过 ${MAX_FILE_SIZE} 文件大小时候,新的内容写入新的文件, 默认10MB -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件路径,新的 ALL 日志文件名称,“ i ” 是个变量 -->
            <FileNamePattern>${LOG_DIR}/all_${LOG_PREFIX}%i.log</FileNamePattern>
            <!-- 配置日志的滚动时间 ,表示只保留最近 10 天的日志-->
            <MaxHistory>${MAX_HISTORY}</MaxHistory>
            <!--当天的日志大小超过 ${MAX_FILE_SIZE} 文件大小时候,新的内容写入新的文件, 默认10MB-->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!-- 输出的日志内容格式化-->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>${LOG_MSG}</pattern>
        </layout>
    </appender>
    <!-- 定义 ERROR 日志的输出方式:-->
    <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 下面为配置只输出error级别的日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <OnMismatch>DENY</OnMismatch>
            <OnMatch>ACCEPT</OnMatch>
        </filter>
        <!--日志文件路径,日志文件名称-->
        <File>${LOG_FILE}/error_${LOG_PREFIX}.log</File>
        <!-- 设置滚动策略,当天的日志大小超过 ${MAX_FILE_SIZE} 文件大小时候,新的内容写入新的文件, 默认10MB -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件路径,新的 ERR 日志文件名称,“ i ” 是个变量 -->
            <FileNamePattern>${LOG_DIR}/err_${LOG_PREFIX}%i.log</FileNamePattern>
            <!-- 配置日志的滚动时间 ,表示只保留最近 10 天的日志-->
            <MaxHistory>${MAX_HISTORY}</MaxHistory>
            <!--当天的日志大小超过 ${MAX_FILE_SIZE} 文件大小时候,新的内容写入新的文件, 默认10MB-->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!-- 输出的日志内容格式化-->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>${LOG_MSG}</Pattern>
        </layout>
    </appender>
    
    <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>127.0.0.1:9601</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>
    
    <!-- additivity 设为false,则logger内容不附加至root ,配置以配置包下的所有类的日志的打印,级别是 ERROR-->
    <logger name="org.springframework"     level="ERROR" />
    <logger name="org.apache.commons"      level="ERROR" />
    <logger name="org.apache.zookeeper"    level="ERROR"  />
    <logger name="com.alibaba.dubbo.monitor" level="ERROR"/>
    <logger name="com.alibaba.dubbo.remoting" level="ERROR" />
    <!-- ${LOG_ROOT_LEVEL} 日志级别 -->
    <root level="${LOG_ROOT_LEVEL}">
        <!-- 标识这个"${STDOUT}"将会添加到这个logger -->
        <appender-ref ref="${STDOUT}"/>
        <!-- FILE_ALL 日志输出添加到 logger -->
        <appender-ref ref="FILE_ALL"/>

        <appender-ref ref="logstash"/>
        <!-- FILE_ERROR 日志输出添加到 logger -->
        <!--<appender-ref ref="FILE_ERROR"/>-->
    </root>
</configuration>

3.3 创建测试controller,生成日志

配置1

@SpringBootApplication(exclude= DataSourceAutoConfiguration.class)
public class ElasticsearchDemoSpringApplication {

	public static void main(String[] args) {
		SpringApplication.run(ElasticsearchDemoSpringApplication.class, args);
	}

}

@RestController
@Slf4j
public class ControllerTest {
    @GetMapping("/test")
    public String hello(){
        log.info("进入-----访问到当前接口:");
        log.info("当前时间{}:", System.currentTimeMillis());
        log.info("结束-----访问结束接口:");
        return "this is a test controller method";
    }

}

3.4 浏览器访问

http://localhost:8081/test

4. Kibana (版本:8.2.2)

4.1 启动

doc窗口启动

E:
cd E:\log\kibana-8.2.2
bin\kibana

4.2 es生成token令牌,并记录

E:
cd E:\log\elasticsearch-8.2.2\bin
elasticsearch-create-enrollment-token -s kibana

记录下值

在这里插入图片描述

4.3 浏览器打开界面显示地址

填写上一步的token值

在这里插入图片描述
在这里插入图片描述

4.4 初始完成后,关闭,修改E:\log\kibana-8.2.2\config\kibana.yml文件

文件最后新增配置(界面中文)

i18n.locale: "zh-CN"

4.5 再次启动

E:
cd E:\log\kibana-8.2.2
bin\kibana

4.6 浏览器访问 http://localhost:5601/

输入1.2步骤新建的用户

4.7 配置

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值