您的位置:首页 > 娱乐 > 八卦 > 同城推广平台_开发一个小软件多少钱_西安推广平台排行榜_长安seo排名优化培训

同城推广平台_开发一个小软件多少钱_西安推广平台排行榜_长安seo排名优化培训

2025/5/1 22:32:16 来源:https://blog.csdn.net/qq_21480147/article/details/146840661  浏览:    关键词:同城推广平台_开发一个小软件多少钱_西安推广平台排行榜_长安seo排名优化培训
同城推广平台_开发一个小软件多少钱_西安推广平台排行榜_长安seo排名优化培训

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 => 5044codec => 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.loglevel: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 故障导致日志丢失。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com