elasticsearch,log4j,logstash,filebeat,Parsing,elasticsearch,Log4j,Logstash,Filebeat" /> elasticsearch,log4j,logstash,filebeat,Parsing,elasticsearch,Log4j,Logstash,Filebeat" />

Parsing 从Logstash log4j输入到beats

Parsing 从Logstash log4j输入到beats,parsing,elasticsearch,log4j,logstash,filebeat,Parsing,elasticsearch,Log4j,Logstash,Filebeat,请注意,我使用的是logstash的log4j输入,它允许我跳过日志解析(grok…) 在版本中,Elastic now将此输入标记为“已弃用”,而另一种选择是“文件节拍”,它直接监听日志文件 问题是您需要通过grok filter再次解析日志文件……是否有任何可能的方法可以在不再次解析日志行的情况下使用beats for log4j,就像旧的log4j socketAppender一样 谢谢log4j不使用布局。它以结构化格式发送数据,因此不需要grok 为了获得类似的结果,您可以配置log4

请注意,我使用的是logstash的log4j输入,它允许我跳过日志解析(grok…)

在版本中,Elastic now将此输入标记为“已弃用”
,而另一种选择是“文件节拍”,它直接监听日志文件

问题是您需要通过grok filter再次解析日志文件……是否有任何可能的方法可以在不再次解析日志行的情况下使用beats for log4j,就像旧的log4j socketAppender一样

谢谢

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

为了获得类似的结果,您可以配置log4j以结构化格式将数据写入日志文件。这通常是通过。因此,配置应用程序的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

您可以使用
logstash logback编码器
,它提供了一个实现SocketAppender的
LogstashSocketAppender
,并使用RSysLog将json格式的日志发送到elasticsearch。

感谢您的回复,但这种方法将生成不必要的额外日志…真的,但有一个好处是日志文件就像一个缓冲区。如果Logstash下降,则不会丢失任何日志。当Logstash关闭时,SocketAppender会删除日志。你是对的,我认为使用json日志文件的想法非常聪明,谢谢,我接受你的回答
filebeat.prospectors:
- type: log
  paths:
    - /var/log/myapp/output*.json
  json.keys_under_root: true
  json.add_error_key: true
  json.message_key: message