从 Logstash log4j 输入到节拍
From Logstash log4j input to beats
拜托,我正在使用 logstash 的 log4j 输入,它允许我 跳过日志解析 (grok ...)。
`input {
log4j {
mode => "server"
host => "0.0.0.0"
port => 8090
}
}`
Elastic 现在在版本 5.4.1 中将此输入标记为 已弃用 ,现在的替代方案是 filebeats,直接监听日志文件。
问题是您需要通过 grok 过滤器再次解析您的日志文件...是否有任何可能的方法来使用 log4j 的节拍而无需再次解析日志行,确切地说像旧的 log4j socketAppender ?
谢谢
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
你可以使用logstash-logback-encoder
,它提供了一个LogstashSocketAppender
,它实现了SocketAppender,并使用RSysLog将json格式的日志发送到elasticsearch。
拜托,我正在使用 logstash 的 log4j 输入,它允许我 跳过日志解析 (grok ...)。
`input {
log4j {
mode => "server"
host => "0.0.0.0"
port => 8090
}
}`
Elastic 现在在版本 5.4.1 中将此输入标记为 已弃用 ,现在的替代方案是 filebeats,直接监听日志文件。
问题是您需要通过 grok 过滤器再次解析您的日志文件...是否有任何可能的方法来使用 log4j 的节拍而无需再次解析日志行,确切地说像旧的 log4j socketAppender ?
谢谢
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
你可以使用logstash-logback-encoder
,它提供了一个LogstashSocketAppender
,它实现了SocketAppender,并使用RSysLog将json格式的日志发送到elasticsearch。