2017-02-06 23 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