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中查看了。

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

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Docker中安装Elasticsearch、Kibana和Logstash(EKL)堆栈,您可以按照以下步骤进行操作: 1. 首先,确保您已经安装了Docker和Docker Compose。您可以根据您的操作系统找到适合您的安装方法。 2. 创建一个新的目录来存放您的EKL配置文件和数据。例如,您可以创建一个名为`ekl`的目录。 3. 在`ekl`目录中创建一个名为`docker-compose.yml`的文件,并使用以下内容填充它: ```yaml version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.15.0 container_name: elasticsearch environment: - discovery.type=single-node ports: - 9200:9200 volumes: - esdata:/usr/share/elasticsearch/data kibana: image: docker.elastic.co/kibana/kibana:7.15.0 container_name: kibana ports: - 5601:5601 environment: - ELASTICSEARCH_HOSTS=http://elasticsearch:9200 logstash: image: docker.elastic.co/logstash/logstash:7.15.0 container_name: logstash volumes: - ./logstash/config/:/usr/share/logstash/pipeline/ ports: - 5044:5044 volumes: esdata: ``` 4. 在`ekl`目录中创建一个名为`logstash`的子目录,并在其中创建一个名为`config`的子目录。 5. 在`config`目录中创建一个名为`logstash.conf`的文件,并使用以下内容填充它: ``` input { beats { port => 5044 } } output { elasticsearch { hosts => "elasticsearch:9200" index => "logs-%{+YYYY.MM.dd}" } } ``` 6. 确保您在`ekl`目录中打开一个终端或命令提示符窗口,并运行以下命令来启动EKL堆栈: ``` docker-compose up ``` 这将下载所需的Docker镜像并启动Elasticsearch、Kibana和Logstash容器。 7. 在浏览器中访问`http://localhost:5601`以打开Kibana控制台。您可以使用Kibana来管理和可视化您的日志数据。 请注意,以上步骤提供了一个基本的配置,并且默认情况下没有进行任何安全性配置。在生产环境中,您应该根据需要进行进一步的配置和安全性硬化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值