2017-02-06 12 views
0

Я новичок в logstash и пытаюсь перейти через различные блоги/ссылки, чтобы понять его подробно. Я застрял в проблеме, когда я хочу разбирать строку Json, которая встроена в обычную строку строки.Grep Json String для фильтра 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: Line} "]}} – BobCoder

ответ

0

Вам просто нужно использовать json фильтр после grok фильтра:

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

отметить также, что я изменил ваш Grok шаблон немного, чтобы исключить - перед данными JSON.

+0

Отлично. Он работал и может видеть результат. Спасибо за вашу помощь @Val. – BobCoder

+0

Теперь я застрял с другой проблемой, когда я передаю трассировку стека как json. Длина трассы трассы довольно велика (> 5k Character). Хотя это корректный Json, в logstash он не работает с ошибкой 'exception => # BobCoder