2017-01-21 3 views
1

Я хотел бы прочитать файл по очереди и поместить только строки в очередь. Процесс работает, но в очереди есть много другой информации, такой как версия и так далее.Logstash получить только содержимое сообщения

У вас есть идея?

Вот мой конфигурационный файл:

input { 
    file { 
    codec => plain 
    path => "/apps/*.txt" 
    } 
} 
filter{ 

} 
output { 
    stomp { 
     host => "localhost" 
     port => "61613" 
     destination => "stomp-test" 
     debug => "true" 
     headers => { 
       "amq-msg-type" => "text" 
       "my_custom_header" => "kutya" 
     } 
    } 
} 

example.txt содержит: Это мой тест строки!

Корпус MQ содержит: {"сообщение": "Это мой тестовый ряд!", "@ Version": "1", "@ timestamp": "2017-01-21T13: 42: 21.084Z" , "path": "/ apps/1.txt", "host": "ol7"}

Ожидаемый результат: Это мой тестовый ряд!

Заранее спасибо.

ответ

1

stomp выход, так как он в настоящее время стоит, будет писать только JSON в очереди назначения, как можно видеть in the source code этого плагина:

t.send(event.sprintf(@destination), event.to_json, headers) 
             ^
              | 
            writes JSON 

Лучшее, что вы можете сделать, это удалить все другие поля, используя mutate/remove_field filter, как это:

filter { 
    mutate { 
    remove_field => ["@timestamp", "@version", "path", "host"] 
    } 
} 

Тогда вы получите это только в очереди назначения:

{"message":"This is my test row!"} 
Смежные вопросы