在此Java Spring Boot应用程序中使用Logstash时,如何调用文件信号?

时间:2019-04-11 14:24:43

标签: elasticsearch logstash kibana logback filebeat

我正在成功地从应用日志中发送日志,我从本教程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]}"
  }
}

1 个答案:

答案 0 :(得分:1)

您没有使用Filebeat。使用<destination>localhost:4560</destination>,您可以直接发送到Logstash。很好,因为您不需要关心日志文件,解析它们或填充磁盘。不利之处在于,如果网络中断,您将不会收到任何消息,并且Logback仅会缓冲200MB的日志记录,因此您可能会在长时间中断期间丢失日志。

PS:使用此配置时,由于您没有使用beats {块(也没有使用Filebeat),因此可以将它从logstash.conf中删除。