SpringBoot整合LogStash,LogStash采集服务器日志

news2025/4/3 4:04:56

LogStash

1. 下载

版本支持兼容表https://www.elastic.co/cn/support/matrix

版本: 7.16.x 的最后一个版本

https://www.elastic.co/downloads/past-releases/logstash-7-16-3

需要提前安装好jdk1.8和ES, 此处不在演示

在这里插入图片描述

2. 安装

tar -xvf logstash-7.16.3-linux-x86_64.tar.gz
cd logstash-7.16.3
touch logstash-my.conf

3.配置

分 inputs,filters、outputs三个主要配置

此处以以下配置为例,将服务器中的log日志推至ES中

# UAT
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.


input {
    file {
        path => ["/opt/javaproject/logs/all/*.log","/opt/javaproject/logs/all.log"]
    }
}
filter {

}

output {
  elasticsearch {
      action => "index"
      hosts  =>  "http://127.0.0.1:9200"
      user   =>  "elastic"
      password => "elastic"
      index  => "app-uat-log-%{+YYYY-MM-dd}"
  }

}

4.启动

在logstash 目录输入如下命令进行启动:

./bin/logstash -f logstash-test.conf

后台启动:

nohup ./bin/logstash -f logstash-test.conf >/dev/null 2>&1 &

热配置加载启动:

nohup ./bin/logstash -f logstash-test.conf --config.reload.automatic >/dev/null 2>&1 &

启动成功之后,如果是非后台启动,可以在控制台查看数据的传输,如果是后台启动,则可以在logstash的log目录中进行查看。

5.问题

1. SpringBoot整合logstash, 跟logstash直接监听log文件有何区别

Spring Boot 整合 LogstashLogstash 直接监听日志文件 是两种不同的日志采集方式,各有优劣,具体区别如下:


1. Spring Boot 整合 Logstash(主动推送)
原理

Spring Boot 项目通过 LogbackLog4j2 直接向 Logstash 发送日志数据,而不是依赖 Logstash 监听日志文件。

实现方式
  1. 使用 Logstash TCP/UDP 方式推送日志
    logback-spring.xml 配置 Logstash Appender:

    <configuration>
        <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
            <destination>logstash-server:5044</destination>
            <encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
        </appender>
    
        <root level="info">
            <appender-ref ref="LOGSTASH" />
        </root>
    </configuration>
    
  2. 使用 ELK Stack 进行日志管理
    Logstash 监听 TCP 端口接收日志:

    input {
      tcp {
        port => 5044
        codec => json
      }
    }
    
    output {
      elasticsearch {
        hosts => ["http://es-server:9200"]
        index => "springboot-logs"
      }
    }
    
优缺点

实时性高:日志可以即时推送到 Logstash,延迟较低。
不会丢失日志:不会因为文件轮转导致日志缺失。
对应用影响较大:Spring Boot 需要主动推送日志,若 Logstash 不可用可能会影响应用运行。
部署复杂:需要修改 Spring Boot 日志配置,并保证 Logstash 端口可用。


2. Logstash 直接监听日志文件(被动采集)
原理

Spring Boot 只需按正常方式输出日志到文件,Logstash 监听该日志文件并读取数据推送到 Elasticsearch。

实现方式
  1. Spring Boot 配置日志输出到文件

    logging:
      file:
        name: logs/app.log
      level:
        root: info
    
  2. Logstash 配置监听文件

    input {
      file {
        path => "/path/to/logs/app.log"
        start_position => "beginning"
        sincedb_path => "/dev/null"
      }
    }
    
    output {
      elasticsearch {
        hosts => ["http://es-server:9200"]
        index => "springboot-logs"
      }
    }
    
优缺点

对应用无侵入:Spring Boot 只是正常写日志,不需要做额外改动。
更稳定:即使 Logstash 发生故障,Spring Boot 也不会受影响。
实时性稍差:Logstash 需要轮询日志文件,会有一定延迟。
日志文件轮转问题:如果日志文件滚动(log rotation),可能会丢失部分日志,需额外处理 sincedb


3. 两者的主要区别
方式实时性对 Spring Boot 影响部署难度可靠性
Spring Boot 整合 Logstash(推送)高(直接推送)需要修改日志配置,可能影响应用需要配置 Logstash 端口高(不会因文件丢失日志)
Logstash 监听日志文件(采集)略低(依赖文件变更)完全无侵入只需配置 Logstash 监听文件可能受 log rotation 影响

4. 什么时候选择哪种方式?
  • 如果你需要高实时性(如监控系统、异常报警) → 选择 Spring Boot 整合 Logstash,直接推送日志。
  • 如果你希望对 Spring Boot 无侵入,简单易用 → 选择 Logstash 监听日志文件,避免影响应用。
  • 如果你的应用是容器化(Docker / Kubernetes) → 推荐 Spring Boot 直接推送到 Logstash,因为容器日志文件管理不稳定。
  • 如果你的应用是传统部署(虚拟机/物理机)两种方式都可以,但监听文件方式可能更简单。
最佳实践

可以结合两者:

  • 应用运行时推送关键日志(错误日志、重要事件)到 Logstash,用于监控和报警。
  • 同时使用文件日志记录全部日志,并用 Logstash 监听日志文件,用于历史查询。

这种方式既能保证实时性,又不会因为 Logstash 故障导致日志丢失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2326250.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

目前市场上,好用的校招系统是哪个?

在数字化浪潮的推动下&#xff0c;校园招聘已从传统的“海投简历线下宣讲”模式全面转向智能化、数据化。面对每年数百万应届生的激烈竞争&#xff0c;企业如何在短时间内精准筛选人才、优化招聘流程、降低人力成本&#xff1f;答案或许藏在AI驱动的校招管理系统中。而在这场技…

SharpBrowser:用C#打造超快的个性化开源浏览器!

推荐一个基于.Net 8 和 CefSharp开发的开源浏览器。 01 项目简介 SharpBrowser 是一个用 C# 和 CefSharp 开发的全功能网页浏览器。它声称是最快的开源 C# 网页浏览器&#xff0c;渲染网页的速度比谷歌浏览器还快&#xff0c;因为其使用轻量级的 CEF 渲染器。 经过比较所有可…

【新模型速递】PAI一键云上零门槛部署DeepSeek-V3-0324、Qwen2.5-VL-32B

DeepSeek近期推出了“DeepSeek-V3-0324”版本&#xff0c;据测试在数学推理和前端开发方面的表现已优于 Claude 3.5 和 Claude 3.7 Sonnet。 阿里也推出了多模态大模型Qwen2.5-VL的新版本--“Qwen2.5-VL-32B-Instruct”&#xff0c;32B参数量实现72B级性能&#xff0c;通杀图文…

【Elasticsearch基础】基本核心概念介绍

Elasticsearch作为当前最流行的分布式搜索和分析引擎&#xff0c;其强大的功能背后是一套精心设计的核心概念体系。本文将深入解析Elasticsearch的五大核心概念&#xff0c;帮助开发者构建坚实的技术基础&#xff0c;并为高效使用ES提供理论支撑。 1 索引&#xff08;Index&…

Github 热点项目 awesome-mcp-servers MCP 服务器合集,3分钟实现AI模型自由操控万物!

【今日推荐】超强AI工具库"awesome-mcp-servers"星数破万&#xff01; ① 百宝箱式服务模块&#xff1a;AI能直接操作浏览器、读文件、连数据库&#xff0c;比如让AI助手自动整理Excel表格&#xff0c;三分钟搞定全天报表&#xff1b; ② 跨领域实战利器&#xff1a;…

SpringMVC 拦截器(Interceptor)

一.拦截器 假设有这么一个场景&#xff0c;一个系统需要用户登录才能进入&#xff0c;在检验完用户的信息后对页面进行了跳转。但是如果我们直接输入跳转的url&#xff0c;可以绕过用户信息校验&#xff08;用户登录&#xff09;&#xff0c;直接进入系统。 因此我们引入了使…

03-SpringBoot3入门-配置文件(自定义配置及读取)

1、自定义配置 # 自定义配置 zbj:user:username: rootpassword: 123456# 自定义集合gfs:- a- b- c2、读取 1&#xff09;User类 package com.sgu.pojo;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.spring…

【蓝桥杯每日一题】3.28

&#x1f3dd;️专栏&#xff1a; 【蓝桥杯备篇】 &#x1f305;主页&#xff1a; f狐o狸x "今天熬的夜&#xff0c;会变成明天奖状的闪光点&#xff01;" 目录 一、唯一的雪花 题目链接 题目描述 解题思路 解题代码 二、逛画展 题目链接 题目描述 解题思路 解题代…

万字长文详解Text-to-SQL

什么是Text-to-SQL 在各个企业数据量暴涨的现在&#xff0c;Text-to-SQL越来越重要了&#xff0c;所以今天就来聊聊Text-to-SQL。 Text-to-SQL是一种将自然语言查询转换为数据库查询的技术。它可以让用户通过自然语言来查询数据库&#xff0c;而不需要编写复杂的SQL语句。 T…

【Linux】动静态库的制作与使用

一.对软硬链接的补充 1、无法对目录进行硬链接 为什么呢&#xff1f; 首先&#xff0c;我们在访问文件时&#xff0c;每一个文件都会有自己的dentry结构&#xff0c;这些结构会在内存中维护一棵路径树&#xff0c;来快速进行路径查找。但是如果某个节点直接使用硬链接到了根节…

ubuntu22.04 如何安装 ch341 驱动

前言 本篇是介绍ubuntu22.04如何安装 ch341 驱动&#xff0c;并对其中遇到的问题进行整理。 一、流程 1.1 查看CH340驱动 首先是查看ubuntu22.04系统自带的驱动&#xff0c;用以下命令即可 ls /lib/modules/$(uname -r)/kernel/drivers/usb/serial 然后会跳出以下界面&…

个人博客网站从搭建到上线教程

步骤1:设计个人网站 设计个人博客网站的风格样式,可以在各个模板网站上多浏览浏览,以便有更多设计网站风格样式的经验。 设计个人博客网站的内容,你希望你的网站包含哪些内容如你的个人基本信息介绍、你想分享的项目、你想分享的技术文档等等。 步骤2:选择开发技术栈 因…

mac m4 Homebrew安装MySQL 8.0

1.使用Homebrew安装MySQL8 在终端中输入以下命令来安装MySQL8&#xff1a; brew install mysql8.0 安装完成后&#xff0c;您可以通过以下命令来验证MySQL是否已成功安装&#xff1a; 2.配置mysql环境变量 find / -name mysql 2>/dev/null #找到mysql的安装位置 cd /op…

UE5学习笔记 FPS游戏制作26 UE中的UI

文章目录 几个概念创建一个UI蓝图添加UI获取UI的引用 切换设计器和UI蓝图将UI添加到游戏场景锚点轴点slotSizeToContent三种UI数据更新方式(Text、Image)函数绑定属性绑定事件绑定 九宫格分割图片按钮设置图片绑定按下事件 下拉框创建添加数据修改样式常用函数 滚动框创建添加数…

Navicat导出mysql数据库表结构说明到excel、word,单表导出方式记录

目前只找到一张一张表导出的方式 使用information_schema传入表名查询 字段名根据需要自行删减&#xff0c;一般保留序号、字段名、类型、说明就行 SELECT COLUMNS.ORDINAL_POSITION AS 序号, COLUMNS.COLUMN_NAME AS 字段名, COLUMNS.COLUMN_TYPE AS 类型(长度), COLUMNS.N…

Linux驱动开发 中断处理

目录 序言 1.中断的概念 2.如何使用中断 中断处理流程 中断上下文限制 屏蔽中断/使能 关键区别与选择 上半部中断 下半部中断 软中断&#xff08;SoftIRQ&#xff09; 小任务(Tasklet) 工作队列&#xff08;Workqueue&#xff09; 线程 IRQ&#xff08;Threaded IRQ…

Centos主机检查脚本

使用方法&#xff1a; 将脚本保存为 CentOS_syscheck.sh 添加执行权限&#xff1a; chmod x CentOS_syscheck.sh 执行脚本&#xff1a; ./CentOS_syscheck.sh #!/bin/bash# 设置颜色变量 RED\033[0;31m GREEN\033[0;32m YELLOW\033[0;33m BLUE\033[0;34m NC\033[0m # 重置…

python系统之综合案例:用python打造智能诗词生成助手

不为失败找理由&#xff0c;只为成功找方法。所有的不甘&#xff0c;因为还心存梦想&#xff0c;所以在你放弃之前&#xff0c;好好拼一把&#xff0c;只怕心老&#xff0c;不怕路长。 python系列之综合案例 前言一、项目描述二、项目需求三、 项目实现1、开发准备2、代码实现 …

23种设计模式-结构型模式-桥接器

文章目录 简介问题解决方案示例总结 简介 桥接器是一种结构型设计模式&#xff0c;可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构&#xff0c;从而能在开发时分别使用。 问题 假如你有一个几何形状Shape类&#xff0c;它有两个子类&#xff1a;圆形C…

K8S学习之基础五十八:部署nexus服务

部署nexus服务 Nexus服务器是一个代码包管理的服务器&#xff0c;可以理解 Nexus 服务器是一个巨大的 Library 仓库。Nexus 可以支持管理的工具包括 Maven &#xff0c; npm 等&#xff0c;对于 JAVA 开发来说&#xff0c;只要用到 Maven 管理就可以了。Nexus服务器作用&#x…