从Logstash log4j输入到节拍

时间:2017-06-13 11:03:34

标签: parsing elasticsearch log4j logstash filebeat

请使用 log4j 输入logstash,它允许我跳过日志解析(grok ...)。

`input {
   log4j {
      mode => "server"
      host => "0.0.0.0"
      port => 8090
     }
   }`

现在,在版本5.4.1中,弹性标记将此输入标记为 已弃用 ,现在替代方案是 filebeats ,直接听日志文件。

问题是您需要通过 grok过滤器再次解析日志文件 ...是否有任何可能的方法使用beats for log4j而无需再次解析日志行,就像旧的log4j socketAppender一样?

谢谢

2 个答案:

答案 0 :(得分:1)

log4j socket appender不使用布局。它以结构化格式发送数据,因此不需要grok。

要获得类似的结果,您可以配置log4j以结构化格式将数据写入日志文件。这通常使用JSON layout来完成。因此,配置应用程序的log4j设置以将JSON事件写入文件。

然后,一旦您以结构化格式获取日志,就可以配置Filebeat以读取日志,解码JSON数据,并将事件转发给Logstash或Elasticsearch。

filebeat.prospectors:
- type: log
  paths:
    - /var/log/myapp/output*.json
  json.keys_under_root: true
  json.add_error_key: true
  json.message_key: message

答案 1 :(得分:0)

您可以使用logstash-logback-encoder,它提供LogstashSocketAppender,它实现SocketAppender,并使用RSysLog将json格式的日志发送到elasticsearch。