spring-boot +ELK实现日志收集

一.简介

1:ELK是什么?

ELK分别是Elasticsearch(用于存储收集到的日志信息)、Logstash(是收集日志,配合spring boot再发送到Elasticsearch上 )、Kibana(是可视化的界面)

通过EKL日志收集,就不用再去线上服务器去查看日志

二.使用方法

1.开始搭建

https://download.csdn.net/download/m0_61569140/89507214 这是我已经下载的安装包;

也可以去官网找自己需要的下载

步骤一:Elasticsearch 安装

解压文件,进入bin目录,双击elasticsearch.bat,出现命令窗,不要关掉

在浏览器里打开这个地址http://localhost:9200/

出现这个说明没问题

步骤二:Kibana安装

跟前面的一样,进入bin目录双击kibana.bat启动,访问 http://localhost:5601/ 即可打开Kibana的用户界面

步骤三:logstash的安装

解压,进入bin目录,新建配置文件logstash.conf,配置内容如下

#读取控制台日志
input { stdin { } }

input {
  tcp {
    host => "127.0.0.1"
    port => 9321
    mode => "server"
#    tags => ["tags"]
    codec => json_lines
    }
}

# output { stdout { codec => rubydebug } }
output {
  stdout{codec =>rubydebug}
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "logback-%{+YYYY.MM.dd}"
  }
}

在bin目录里面打开cmd,输入 logstash -f logstash.conf,显示成功,不要关掉命令窗

2.添加logback.xml配置文件:

    添加依赖

        <!-- 日志配置 -->
        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>5.2</version>
        </dependency>

在日志配置文件使用,参考文件:主要看<appender name="LOGSTASH"/>的内容就可以了

<?xml version="1.0" encoding="UTF-8"?>
<configuration> 
	<!--日志配置-->
	<property name="PROJECT_NAME" value="romoss_java"/>
	<property name="LOG_BASE" value="/home/product/logs"/>
	<property name="LOG_BACK_DIR" value="${LOG_BASE}/${PROJECT_NAME}_logs"/>

	<!-- INFO日志  -->
	<appender name="INFO_ROLLING"	class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_BACK_DIR}/info.log</file>
		<rollingPolicy	class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${LOG_BACK_DIR}/info_%d{yyyyMMddHH}_%i.log</fileNamePattern>
			<maxFileSize>100MB</maxFileSize>
			<maxHistory>120</maxHistory>
			<totalSizeCap>5GB</totalSizeCap>
		</rollingPolicy>
		<encoder>
			<pattern>%d{yyyy-MM-dd	HH:mm:ss.SSS}|%thread|%X{traceId}-%X{rpcId}|%level|%C|%M|%L|%.-5120msg|%X{callChain}%n</pattern>
			<charset>UTF-8</charset>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>INFO</level>
		</filter>
	</appender>	
	
	<!-- ERROR日志 -->
    <appender name="ERROR_ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${LOG_BACK_DIR}/error.log</file>
		<rollingPolicy	class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${LOG_BACK_DIR}/error_%d{yyyyMMdd}_%i.log</fileNamePattern>
			<maxFileSize>50MB</maxFileSize>
			<maxHistory>10</maxHistory>
			<totalSizeCap>2GB</totalSizeCap>
		</rollingPolicy>
		<encoder>
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}|%thread|%X{traceId}-%X{rpcId}|%level|%C|%M|%L|%.-5120msg|%X{callChain}%n</pattern>
			<charset>UTF-8</charset>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>WARN</level>
		</filter>
	</appender>

	<include resource="org/springframework/boot/logging/logback/base.xml" />
	<!--对应的映射的配置名-->
	<appender name="LOGSTASH"
			  class="net.logstash.logback.appender.LogstashTcpSocketAppender">
		<!--配置logStash 服务地址,9321。9321是logstash\bin\logstash.conf文件中配置的输出端口号 -->
		<destination>127.0.0.1:9321</destination>
		<!-- 日志输出编码 -->
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<charset>utf8</charset>
			<!--Pattern为日志匹配的规则,也是索引的字段名,此处我们不指定,是因为在日志的打印的时候是直接打印的实体,
            实体与的字段与值是规则的json格式,所以此处不做额外处理-->
			<Pattern>%msg%n</Pattern>
		</encoder>
	</appender>

    <logger name="org.springframework" level="WARN" />
	<logger name="java.sql.Connection" level="INFO" />
	<logger name="java.sql.ResultSet" level="INFO" />
	<logger name="org.quartz.core.QuartzSchedulerThread" level="WARN" />
	<logger name="org.mybatis.spring.SqlSessionUtils" level="WARN" />
	
	<root level="INFO">
		<appender-ref ref="ERROR_ROLLING"/>
		<appender-ref ref="INFO_ROLLING"/>
		<appender-ref ref="LOGSTASH"/>
	</root>

</configuration>

配置完之后,重启项目,再访问http://localhost:5601/ 就可以了

三.日志分析

进去创建个logback-*全匹配索引模式,就不用跟图上,每天分开了。创建完成之后,点击Discover进入,就可查看日志了。

四.总结

搭建了ELK日志收集系统之后,如果要查看SpringBoot应用的日志信息,就不需要查看服务器上日志文件了,直接在Kibana中查看了。

以上就是本文章的全部内容,本文章有借鉴了一些老师的代码,再结合本项目使用,记录文章是为了方便学习而记录,希望也能对大家有所帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值