【问题标题】:Configuration ELK + log4j配置ELK + log4j
【发布时间】:2014-11-24 09:56:10
【问题描述】:

我在 ubuntu 服务器 14.04 上安装了 ELK。现在我想将我所有的 jboss 服务器日志发送到这里(使用 log4j)。

logstash 配置: 输入配置文件:

input {
    log4j {
        type => "log4j"
        port => 5000
    }
}

过滤配置文件:

filter {
    if [type] == "log4j" {
        grok {
            match => {"message" => MY_GROK_PARSE}
        }
    }
}

和输出文件:

output {
    elasticsearch {
        embedded => true
    }
}

并完成 log4j appender:

<appender name="LOGSTASH" class="org.apache.log4j.net.SocketAppender"> 
    <param name="Port" value="5000"/>
    <param name="RemoteHost" value="XXX.XXX.XXX.XXX"/> <!-- There is a real adress here ;-) -->
    <param name="ReconnectionDelay" value="50000"/> 
    <param name="LocationInfo" value="true"/> 
    <layout class="org.apache.log4j.PatternLayout">
     <param name="ConversionPattern" value="%d %-5p [%c{1}] %m%n" />
    </layout>
</appender> 

但是这种配置没有任何反应。所以我不知道我误解了什么。 我的其他附加程序(控制台和本地文件)工作正常。 elasticsearch 日志显示任何信息/活动。

编辑: 更多关于我的 jboss-log4j.xml:

<appender name="Async" class="org.apache.log4j.AsyncAppender">
    <appender-ref ref="FILE" />
    <appender-ref ref="CONSOLE" />
    <appender-ref ref="LOGSTASH" />
</appender>

<root>
    <priority value="INFO" />
    <appender-ref ref="Async" />
</root>

【问题讨论】:

  • 您是否确认 Logstash 确实收到了任何内容(您可以使用 TCP 流量嗅探器进行检查)?如果您将elasticsearch 输出替换为简单的stdout 输出以减少活动部件的数量会怎样?
  • 我照你说的做了。因此,对于 TCP 流量,我在端口 5000 上使用了“嗅探”,但什么也没有显示……(使用嗅探可以吗?)我更改了输出,也没有任何反应。
  • 好的,说明 Log4j 配置有问题。您如何在记录器配置中引用 LOGSTASH 附加程序?
  • 是的,我在帖子中添加了 log4j xml 的一部分给你看。确定我已经关闭了防火墙。

标签: elasticsearch log4j logstash jboss-4.0.x


【解决方案1】:

我知道这是一个旧帖子,但有人可能会觉得它很有用 - log4j SocketAppender 无法使用布局,请参阅docs for SocketAppender

SocketAppenders 不使用布局。他们将序列化的 LoggingEvent 对象发送到服务器端。

您也不需要在 logstash 配置中添加额外的过滤器。 Logstash log4j 插件最小配置就足够了

input {
   log4j {
      data_timeout => 5
      host => "0.0.0.0"
      mode => "server"
      port => 4560
      debug => true
      type => "log4j"
   }
   ... 
}

【讨论】:

    【解决方案2】:

    在这种情况下,您可以将其直接发送给 Elastic。没有理由先通过 LogStash。您可以轻松地使用过滤器来过滤掉您不感兴趣的消息。

    如果你想使用它,我已经在Log4J2 Elastic REST Appender 写了这个附加程序。它能够在将日志事件发送到 Elastic 之前根据时间和/或事件数量缓冲日志事件(使用 _bulk API 以便一次性发送所有事件)。 它已发布到 Maven Central,因此非常简单。

    【讨论】:

      猜你喜欢
      • 2017-03-20
      • 2018-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-24
      • 2010-12-18
      • 1970-01-01
      相关资源
      最近更新 更多