SpringBoot2 集成 ELK 实现日志收集

这篇具有很好参考价值的文章主要介绍了SpringBoot2 集成 ELK 实现日志收集。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一 简介

二 ELK 各组件作用

三 ELK 各组件安装

四 Spring Boot2 集成 logstash 


一 简介


ELK 即 Elasticsearch、Logstash、Kibana 组合起来可以搭建线上日志系统,本文主要讲解使用ELK 来收集 SpringBoot2 应用产生的日志。

二 ELK 各组件作用


Elasticsearch:用于存储收集到的日志信息;
Logstash:用于收集日志,SpringBoot应用整合了Logstash以后会把日志发送给Logstash,Logstash 再把日志转发给 Elasticsearch;
Kibana:通过Web端的可视化界面来查看日志。

三 ELK 各组件安装


3.1 Elasticsearch 和 Kibana 安装请见:CentOS 搭建ElasticSearch

3.2 Logstash 安装

(1)下载 Logstash:Download Logstash Free | Get Started Now | Elastic

          注意:Logstash 版本建议跟 Elasticsearch 一致。

(2)上传安装包至指定目录、并解压

(3)进入 bin 目录创建 logstash-cloud-project.conf 配置文件,输入如下内容:

input {
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4560
    codec => json_lines
  }
}
output {
  elasticsearch {
    # es 连接地址
    hosts => ["http://172.16.20.101:9200"]
    # 索引名称
    index => "cloud-project-logstash-%{+YYYY.MM.dd}"
  }
}

(4)进去 bin 目录,启动 logstash 

./logstash -f logstash-cloud-project.conf 

四 Spring Boot2 集成 logstash 

4.1 pom.xml 添加依赖

		<!--集成logstash-->
		<dependency>
			<groupId>net.logstash.logback</groupId>
			<artifactId>logstash-logback-encoder</artifactId>
			<version>5.3</version>
		</dependency>

4.2 配置日志文件logback.xml让logback的日志输出到logstash

<?xml version="1.0" encoding="UTF-8"?>
<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="cloud-project" />
    <contextName>${app_name}</contextName>
 
    <!-- 日志存放路径 -->
	<property name="log.path" value="${user.dir}/logs" />
    <!-- 日志输出格式 -->
	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
 
	<!-- 控制台输出 -->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
            <pattern>%black %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger) - %cyan(%msg%n)</pattern>
        </encoder>
	</appender>
 
	<!-- 系统日志输出 -->
	<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
	    <file>${log.path}/info.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
			<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 日志最大的历史 30天 -->
			<maxHistory>60</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>${log.pattern}</pattern>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>INFO</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
	</appender>
 
	<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
	    <file>${log.path}/error.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 日志最大的历史 30天 -->
			<maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>ERROR</level>
			<!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
			<!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
 
    <!--输出到logstash的appender-->
    <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!--可以访问的logstash日志收集端口-->
        <destination>172.16.20.101:4560</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
    </appender>
 
    <root level="info">
        <appender-ref ref="console" />
    </root>
 
	<!--日志-->
    <root level="info">
        <appender-ref ref="file_info" />
        <appender-ref ref="file_error" />
        <appender-ref ref="logstash"/>
    </root>
</configuration>

一般我们不需要自定义控制台输出,可以采用默认配置,具体配置参考console-appender.xml

<!--引用默认日志配置-->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!--使用默认的控制台日志输出实现-->
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>

应用名称

    <!--应用名称-->
    <property name="app_name" value="cloud-project" />
    <contextName>${app_name}</contextName>

输出到logstash的appender

    <!--输出到logstash的appender-->
    <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!--可以访问的logstash日志收集端口-->
        <destination>172.16.16.9:4560</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
    </appender>

4.3 启动程序,在 kibana 中查看日志信息

SpringBoot2 集成 ELK 实现日志收集

SpringBoot2 集成 ELK 实现日志收集 

SpringBoot2 集成 ELK 实现日志收集

 文章来源地址https://www.toymoban.com/news/detail-458969.html

到了这里,关于SpringBoot2 集成 ELK 实现日志收集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于elk的springboot web日志收集存储方案

    web系统的日志按照价值排序分类 controller层的接口访问日志(debug日志) 自定义包下的其他日志(debug日志) 全局日志 ① 全局错误日志 ② 部分组件的debug日志 ③ 部分组件的Info日志 一般来讲,1和2的价值最大,2可基于实际业务情况,进一步划分,如component目录下日志,ser

    2024年02月09日
    浏览(21)
  • SpringBoot+Kafka+ELK 完成海量日志收集(超详细)

    SpringBoot项目准备 引入log4j2替换SpringBoot默认log,demo项目结构如下: pom IndexController 测试Controller,用以打印日志进行调试 InputMDC 用以获取log中的 [%X{hostName}] 、 [%X{ip}] 、 [%X{applicationName}] 三个字段值 NetUtil 启动项目,访问 /index 和 /ero 接口,可以看到项目中生成了 app-collector.

    2024年04月16日
    浏览(26)
  • Elk+Filebeat+Kafka实现日志收集

    1.实验组件 2.安装前准备 3.安装Zookeeper 1.安装Kafka 2.命令行测试  1.安装Filebeat 2.时间同步 3.配置filebeat 4.配置logstash 1.安装配置filebeat 2.配置logstash

    2024年02月05日
    浏览(36)
  • 【日志篇】Spring Boot 整合 ELK 实现日志收集与检索

    Elasticsearch 入门必读 Docker安装ELK 【数据篇】SpringBoot 整合 Elasticsearch 实践数据搜索引擎 整合前务必先看看 【Docker安装ELK】 这篇文章!!! Demo 地址:mingyue-springboot-logstash 1.添加 logback.xml 2.编辑 logstash 配置文件 到这儿就结束了,哈哈哈~ 启动项目,接下来走验证流程,看看日

    2024年02月05日
    浏览(28)
  • springboot集成ELK日志分析平台(windows版)

    1.elk是什么? 在安装ELK之前,建议大家先了解一下elk。 ELK 是elastic公司提供的 一套完整的日志收集以及展示的解决方案 ,是三个产品的首字母缩写,分别是ElasticSearch、Logstash 和 Kibana。 ElasticSearch简称ES ,它是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化

    2024年02月11日
    浏览(25)
  • 日志采集 logback集成logstash ELK springboot

    logstash依赖  给logback配置logstash的那台机器的ip和服务的端口  在logstash那台机器上配置  在安装了logstash的服务器里,找到logstash文件目录,执行./logstash -f logstash.conf即可启动logstash 以上配置即可实现 logback 到 logstash。 下面是升级配置 ===========================分割线===============

    2024年02月12日
    浏览(37)
  • Elasticsearch基本操作+集成SpringBoot+ELK日志平台搭建

    Elasticsearch是一种开源的搜索和分析引擎,最初由开源搜索引擎Lucene的作者于2010年创建。它提供了一个可伸缩、高性能的搜索和数据分析平台,可用于多种用途,包括 文本搜索、应用程序性能监控、业务分析、日志聚合 等。 Elasticsearch使用分布式架构,可以处理大量数据并实

    2024年02月06日
    浏览(52)
  • Elasticsearch实践:ELK+Kafka+Beats对日志收集平台的实现

    可以在短时间内搜索和分析大量数据。 Elasticsearch 不仅仅是一个全文搜索引擎,它还提供了分布式的多用户能力,实时的分析,以及对复杂搜索语句的处理能力,使其在众多场景下,如企业搜索,日志和事件数据分析等,都有广泛的应用。 本文将介绍 ELK+Kafka+Beats 对日志收集

    2024年02月08日
    浏览(26)
  • ZooKeeper+Kafka+ELK+Filebeat集群搭建实现大批量日志收集和展示

    大致流程:将nginx 服务器(web-filebeat)的日志通过filebeat收集之后,存储到缓存服务器kafka,之后logstash到kafka服务器上取出相应日志,经过处理后写入到elasticsearch服务器并在kibana上展示。 一、集群环境准备 二、搭建zookeeper集群 前提条件:三台机器分别修改时区、关闭防火墙

    2024年02月04日
    浏览(35)
  • 基于Filebeat+Kafka+ELK实现Nginx日志收集并采用Elastalert2实现钉钉告警

           先准备3台Nginx服务器,用做后端服务器,(由于机器有限,也直接用这三台机器来部署ES集群),然后准备2台服务器做负载均衡器(Nginx实现负载均衡具体实现操作有机会在介绍),如果是简单学习测试,可以先使用3台Nginx服务器就可以,先告一段落。 3台Nginx服务

    2024年02月15日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包