Grep Json 用于 logstash 过滤器的字符串

Grep Json String for logstash filter

我是 logstash 的新手,正在尝试通过不同的博客/链接来详细了解它。我遇到了一个问题,我想解析嵌入在普通字符串行中的 Json 字符串。

输入字符串

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 插件。我怎样才能做到这一点?

您只需在 grok 过滤器之后使用 json 过滤器:

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

另请注意,我稍微修改了您的 grok 模式以排除 JSON 数据之前的 -