Я пытаюсь обработать записи из файла журнала, который содержит как простые сообщения, так и сообщения в формате json. Моя первоначальная идея состояла в том, чтобы найти сообщения, заключенные в фигурные скобки, и обработать их другим цепным фильтром. Grep работает нормально (как и простая обработка сообщений), но последующий фильтр json сообщает об исключении. Я прикрепил конфигурацию logstash, ввод и сообщение об ошибке ниже.
У вас есть идеи, в чем может быть проблема? Любые альтернативные предложения по обработке записей в формате простого и json из одного и того же файла?
Большое спасибо, Йоханнес
Сообщение об ошибке:
Trouble parsing json {:key=>"@message", :raw=>"{\"time\":\"14.08.2013 10:16:31:799\",\"level\":\"DEBUG\",\"thread\":\"main\",\"clazz\":\"org.springframework.beans.factory.support.DefaultListableBeanFactory\",\"line\":\"214\",\"msg\":\"Returning cached instance of singleton bean 'org.apache.activemq.xbean.XBeanBrokerService#0'\"}", :exception=>#<NoMethodError: undefined method `[]' for nil:NilClass>, :level=>:warn}
конфиг логсташа:
file {
path => [ "plain.log" ]
type => "plainlog"
format => "plain"
}
}
filter {
# Grep json formatted messages and send them to following json filter
grep {
type => "plainlog"
add_tag => [ "grepped_json" ]
match => [ "@message", "^{.*}" ]
}
json {
tags => [ "grepped_json" ]
source => "@message"
}
}
output {
stdout { debug => true debug_format => "json"}
elasticsearch { embedded => true }
}
Вход из файла журнала (всего одна строка):
{"time":"14.08.2013 10:16:31:799","level":"DEBUG","thread":"main","clazz":"org.springframework.beans.factory.support.DefaultListableBeanFactory","line":"214","msg":"Returning cached instance of singleton bean 'org.apache.activemq.xbean.XBeanBrokerService#0'"}