java - 将 Tomcat 日志发送到 Logstash

标签 java tomcat logback logstash logstash-logback-encoder

我正在尝试使用 ELK 堆栈实现集中式日志服务器:Elasticsearch、Logstash、Kibana。它会从许多应用程序接收日志。 基本上我有一个使用具有以下配置的 logback 的 Tomcat 应用程序:

<appender name="ROLLING"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    [...]
</appender>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%date %-5level %logger - %msg%n</pattern>
    </encoder>
</appender>


<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
    <remoteHost>my_remote_host</remoteHost>
    <port>5000</port>

    <encoder class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>


<root level="DEBUG">
    <appender-ref ref="ROLLING" />
    <appender-ref ref="STDOUT" />
    <appender-ref ref="stash" />
</root>

所以理论上这应该通过 TCP 发送所有 logback 日志... 在 my_remote_host 上,我部署了 elasticsearch、logstash 和 kibana。它们似乎都有效。 这是 logstash 的配置:

input {
  stdin {
    type => "human"
  }
  tcp {
    port => 5000
    codec => "json"
    mode => "server"
  }
}

output {
  stdout {}
  elasticsearch {
    host => "my_remote_host"
  }
}

如果我在我的 logstash 实例中向标准输入输入内容,它会成功地为我的输入建立索引。此外,如果我通过 http 向 my_remote_host:5000 发送请求,它会成功记录收到的数据。

问题是 logback 似乎没有使用 LogstashTcpSocketAppender 发送任何数据。即使使用简单的 SocketAppender,它也不起作用......我做错了什么吗?它似乎出于某种原因拒绝写入该套接字,但它没有提示任何事情。

最佳答案

在 catalina.out 中查找 logbacks 启动日志。还要确保您没有任何防火墙(如果您在 aws 中,则没有安全组)

在将日志从 tomcat/logback 发送到 logstach 时,我也使用了不同的编解码器

    tcp {
      port => 4560
      codec => json_lines
      tags => ["app"]
    }

我在过滤器和输出部分使用这个标签,因为 logback 从几个地方消耗日志。

关于java - 将 Tomcat 日志发送到 Logstash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29630256/

相关文章:

java - hibernate/投影中的 Ucase 等价物?

spring - 通过示例进行Spring Boot和Logback

java - 在 Java 中,使用 logback 框架,有没有办法动态配置聊天日志消息的限制

javascript - 生成的excel文件url

java - RxAndroid 改造问题?

java - 无法从 start.spring.io 启动 Spring Boot 2x 应用程序

ruby-on-rails - 有关如何使 Apache Tomcat 与 Ruby on Rails 应用程序一起工作的分步指南?

tomcat - Tomcat 如何选择经过身份验证的远程用户

tomcat - 在 Tomcat 中为 localhost 添加别名

java - 是否可以在 logback 中禁用特定附加程序/记录器的 MDC 日志记录字段?