我正在成功地从应用日志中发送日志,我从本教程http://www.andrew-programming.com/2018/09/18/integrate-springboot-application-with-elk-and-filebeat/开始,然后将代码轻松实现到自己的应用中。
我的问题是我在应用程序的任何地方都没有提到文件拍,它是如何使用的?
一切正常,但好奇地知道文件信号来自哪里,是通过pom文件中的logstash依赖关系吗?
logback-spring.xml
<!DOCTYPE configuration>
<configuration>
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>localhost:4560</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
</encoder>
</appender>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<root level="INFO">
<appender-ref ref="LOGSTASH" />
<!--<appender-ref ref="CONSOLE" />-->
</root>
</configuration>
application.properties
logging.file=/tmp/filebeatDemoApp.log
pom依赖
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.1</version>
</dependency>
logstash.conf
input {
tcp {
port => 4560
codec => json_lines
}
beats {
host => "127.0.0.1"
port => "5044"
}
}
output{
stdout { codec => rubydebug }
elasticsearch {
hosts => ["localhost:9200"]
index => "app-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
答案 0 :(得分:1)
您没有使用Filebeat。使用<destination>localhost:4560</destination>
,您可以直接发送到Logstash。很好,因为您不需要关心日志文件,解析它们或填充磁盘。不利之处在于,如果网络中断,您将不会收到任何消息,并且Logback仅会缓冲200MB的日志记录,因此您可能会在长时间中断期间丢失日志。
PS:使用此配置时,由于您没有使用beats {
块(也没有使用Filebeat),因此可以将它从logstash.conf中删除。