请使用 log4j 输入logstash,它允许我跳过日志解析(grok ...)。
`input {
log4j {
mode => "server"
host => "0.0.0.0"
port => 8090
}
}`
现在,在版本5.4.1中,弹性标记将此输入标记为 已弃用 ,现在替代方案是 filebeats ,直接听日志文件。
问题是您需要通过 grok过滤器再次解析日志文件 ...是否有任何可能的方法使用beats for log4j而无需再次解析日志行,就像旧的log4j socketAppender一样?
谢谢
答案 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。