2017-06-13 37 views
1

請,我正在使用log4j輸入logstash,它允許我跳到跳過日誌解析(grok ...)。從Logstash log4j輸入要跳動

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

彈性,現在,在5.4.1版本,則標註該輸入爲過時,而替代目前filebeats,這直接監聽日誌文件。

的問題是,你需要通過神交過濾再次解析你的日誌文件...有沒有使用log4j的爲無心跳再次解析日誌行任何可能的方式,酷似老的log4j socketAppender?

謝謝

回答

0

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 
+0

謝謝您的回覆,但是這種方法會生成不必要的附加日誌... –

+0

確實如此,但有一個好處是日誌文件就像一個緩衝區。如果Logstash關閉,則不會丟失日誌。當Logstash關閉時,SocketAppender會刪除日誌。 –

+0

你說得對,我認爲使用json日誌文件的想法很聰明,謝謝,我會接受你的回答 –

0

您可以使用logstash-logback-encoder,它提供了一個LogstashSocketAppender,其實施SocketAppender,並使用rsyslog現在發送日誌JSON格式elasticsearch。