SpringBoot整合LogStash,LogStash收罗服务器日记

  论坛元老 | 2025-5-17 01:46:42 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1939|帖子 1939|积分 5817

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. 安装

  1. tar -xvf logstash-7.16.3-linux-x86_64.tar.gz
  2. cd logstash-7.16.3
  3. touch logstash-my.conf
复制代码
3.配置

   分 inputs,filters、outputs三个主要配置
  此处以以下配置为例,将服务器中的log日记推至ES中
  1. # UAT
  2. # Sample Logstash configuration for creating a simple
  3. # Beats -> Logstash -> Elasticsearch pipeline.
  4. input {
  5.     file {
  6.         path => ["/opt/javaproject/logs/all/*.log","/opt/javaproject/logs/all.log"]
  7.     }
  8. }
  9. filter {
  10. }
  11. output {
  12.   elasticsearch {
  13.       action => "index"
  14.       hosts  =>  "http://127.0.0.1:9200"
  15.       user   =>  "elastic"
  16.       password => "elastic"
  17.       index  => "app-uat-log-%{+YYYY-MM-dd}"
  18.   }
  19. }
复制代码
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 监听日记文件。
实现方式


  • 利用 Logstash TCP/UDP 方式推送日记
    在 logback-spring.xml 配置 Logstash Appender:
    1. <configuration>
    2.     <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
    3.         <destination>logstash-server:5044</destination>
    4.         <encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
    5.     </appender>
    6.     <root level="info">
    7.         <appender-ref ref="LOGSTASH" />
    8.     </root>
    9. </configuration>
    复制代码
  • 利用 ELK Stack 进行日记管理
    Logstash 监听 TCP 端口接收日记:
    1. input {
    2.   tcp {
    3.     port => 5044
    4.     codec => json
    5.   }
    6. }
    7. output {
    8.   elasticsearch {
    9.     hosts => ["http://es-server:9200"]
    10.     index => "springboot-logs"
    11.   }
    12. }
    复制代码
优缺点

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

2. Logstash 直接监听日记文件(被动收罗)

原理

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


  • Spring Boot 配置日记输出到文件
    1. logging:
    2.   file:
    3.     name: logs/app.log
    4.   level:
    5.     root: info
    复制代码
  • Logstash 配置监听文件
    1. input {
    2.   file {
    3.     path => "/path/to/logs/app.log"
    4.     start_position => "beginning"
    5.     sincedb_path => "/dev/null"
    6.   }
    7. }
    8. output {
    9.   elasticsearch {
    10.     hosts => ["http://es-server:9200"]
    11.     index => "springboot-logs"
    12.   }
    13. }
    复制代码
优缺点

对应用无侵入: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 故障导致日记丢失。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表