SpringBoot+ELK 收集日志的两种方式
Spring Boot 集成 ELK 主要涉及到 Logstash 和 Elasticsearch。Spring Boot 应用可以通过以下两种方式将日志发送到 ELK 堆栈:
- 直接在应用中将日志发送到 Logstash(通常通过 TCP 或者 UDP)。
- 应用仅将日志输出到控制台或文件,然后通过 Filebeat 监控日志文件的变化,并将其发送到 Logstash。
以下是两种方式的简要说明和示例代码:
方式一:直接在应用中将日志发送到 Logstash
- 在 Spring Boot 应用中引入 Logstash 依赖。
- 配置 Logback 或 Log4j 以将日志发送到 Logstash。
示例代码:
build.gradle 或 pom.xml 中添加 Logstash 依赖
// build.gradle
dependencies {
implementation 'net.logstash.logback:logstash-logback-encoder:6.6'
}
logback-spring.xml 配置
<configuration>
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>localhost:4560</destination>
<encoder class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<root level="info">
<appender-ref ref="LOGSTASH" />
</root>
</configuration>
方式二:通过 Filebeat 监控日志文件
- 在 Spring Boot 应用中配置日志输出至文件。
- 安装并配置 Filebeat 监控这些日志文件,然后将日志发送到 Logstash。
示例代码:
application.properties 或 application.yml 中配置日志输出至文件
logging.file.name=app.log
Filebeat 配置
filebeat.inputs:
- type: log
paths:
- /path/to/your/app.log
output.logstash:
hosts: ["localhost:4560"]
以上两种方式都需要 Logstash 监听相应的端口(例如 4560),并配置与应用相匹配的日志格式。Elasticsearch 随后将接收 Logstash 转发的日志数据,并通过 Kibana 提供可视化和搜索功能。
评论已关闭