Анализатор JSON в logstash игнорирует данные?

Я уже давно занимаюсь этим и чувствую, что фильтр JSON в logstash удаляет данные для меня. Я изначально следовал учебнику изhttps://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14-04

Я сделал некоторые изменения, но это в основном то же самое. Мой фильтр Grok выглядит так:

uuid #uuid and fingerprint to avoid duplicates
{
    target => "@uuid"
    overwrite => true
}
fingerprint
{
    key => "78787878"
    concatenate_sources => true
}
grok #Get device name from the name of the log
{
    match => { "source" => "%{GREEDYDATA}%{IPV4:DEVICENAME}%{GREEDYDATA}" }
}

grok  #get all the other data from the log
{
    match => { "message" => "%{NUMBER:unixTime}..." }
}
date #Set the unix times to proper times.
{
    match => [ "unixTime","UNIX" ]
    target => "TIMESTAMP"
}


grok #Split up the message if it can
{
    match => { "MSG_FULL" => "%{WORD:MSG_START}%{SPACE}%{GREEDYDATA:MSG_END}" }
}
json 
{
    source => "MSG_END"
    target => "JSON"
}

Так что проблема, вызывающая проблемы - это дно, я думаю. Все мои шалости должны быть правильными. Когда я запускаю эту конфигурацию, я вижу, что все в kibana отображается правильно, за исключением всех журналов, в которых был бы код JSON (не все журналы имеют JSON). Когда я запускаю его снова без фильтра JSON, он отображает все. Я пытался использовать оператор IF, чтобы он запускал фильтр JSON, только если он содержит код JSON, но это ничего не решало.

Однако, когда я добавил оператор IF для запуска только определенного формата JSON (поэтому, если MSG_START = x, y или z, тогда MSG_END будет иметь другой формат json. В этом случае, допустим, я только анализирую формат z), тогда в kibana я бы увидел все журналы, которые содержат x и y формат JSON (не проанализирован, хотя), но он не будет показывать z. Так что я уверен, что это связано с тем, как я использую фильтр JSON.

Кроме того, всякий раз, когда я хочу протестировать новые данные, я начинал очищать старые данные вasticsearch, чтобы, если он работает, я знал, что работает мой logstash, а не просто использование памяти изasticsearch. Я сделал это с помощьюXDELETE 'http://localhost:9200/logstash-*/', Но logstash не создаст новые индексы вasticsearch, если я не предоставлю filebeat с новыми журналами. Я не знаю, если это другая проблема или нет, просто подумал, что я должен упомянуть об этом.

Я надеюсь, что все имеет смысл.

РЕДАКТИРОВАТЬ: я просто проверяю файл logstash.stdout, выясняется, что он анализирует JSON, но он только показывает вещи с "_jsonparsefailure" в kibana, так что что-то не так с Elastisearch. Может быть. Я не знаю, просто мозговой штурм :)

ОБРАЗЦЫ ЖУРНАЛОВ:

1452470936.88 1448975468.00 1 7 mfd_status 000E91DCB5A2 load {"up": [38,1.66,0.40,0.13], "mem": [967364,584900,3596,116772], "cpu": [1299,812,1791,3157,480,144 ], "cpu_dvfs": [996,1589,792,871,396,1320], "cpu_op": [996,50]}

MSG_START - это загрузка, MSG_END - это все, что указано в приведенном выше примере, поэтому MSG_END - это правильный JSON, который я хочу проанализировать.

В приведенном ниже журнале нет JSON, но мой logstash попытается проанализировать все после «Inf:» и отправить «_jsonparsefailure».

1452470931.56 1448975463.00 1 6 rc.app 02: 11: 03.301 Inf: NOSApp: UpdateSplashScreen не реализован на этой платформе

Также это мой вывод в logstash, так как я чувствую, что это важно сейчас:

elasticsearch 
{ 
    hosts => ["localhost:9200"] 
    document_id => "%{fingerprint}"
}
stdout { codec => rubydebug }

Ответы на вопрос(2)

Ваш ответ на вопрос