2017-02-06 21 views
0

我是logstash的新手,試圖通過不同的博客/鏈接詳細瞭解它。我遇到了一個問題,我想解析嵌入在普通字符串行中的Json字符串。Grep Json用於logstash過濾器的字符串

輸入字符串

2017-01-27 11:54:48 INFO PropertiesReader:33 - {"timestamp":1485518878968,"h":"297268184dde", "l":"INFO", "cN":"org.com.logstash.demo", "mN":"loadProperties", "m":"load property file from /var/tmp/conf"}

我想提取強調JSON字符串和應用的Json插件的JSON。我怎樣才能做到這一點?

+0

請顯示您當前的logstash配置 – Val

+0

這是非常基本的。 Json字符串是greddy data.filter的一部分{grok {match => [「message」,「%{TIMESTAMP_ISO8601:LogDate}%{LOGLEVEL:loglevel}%{WORD:threadName}:%{NUMBER:ThreadID}%{GREEDYDATA:行}「]}} – BobCoder

回答

0

您只需你grok過濾後使用json過濾器:

filter { 
    grok { 
     match => [ "message", "%{TIMESTAMP_ISO8601:LogDate} %{LOGLEVEL:loglevel} %{WORD:threadName}:%{NUMBER:ThreadID} - %{GREEDYDATA:Line}" ] 
    } 
    json { 
     source => "Line" 
    } 
} 

另外請注意,我已經修改了你的神交模式一點點排除JSON數據之前-

+0

太棒了。它工作並可以看到輸出。感謝您的幫助@Val。 – BobCoder

+0

現在我遇到了另一個問題,我將棧跟蹤作爲json傳遞。痕跡長度相當大(> 5k字符)。雖然它是一個有效的Json,但在logstash中,它失敗並出現異常=># BobCoder