Logstash仅获取邮件内容

时间:2017-01-21 13:53:36

标签: 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正文包含: {“message”:“这是我的测试行!”,“@ version”:“1”,“@ timestamp”:“2017-01-21T13:42:21.084Z”,“path”:“/ apps / 1 .TXT”, “宿主”: “OL7”}

我的预期结果应该是: 这是我的测试行!

提前致谢。

2 个答案:

答案 0 :(得分: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!"}

答案 1 :(得分:0)

我在寻找类似解决方案时遇到了这个问题。

您的问题可以使用编解码器解决。

将此行添加到您的输出中:

      codec => line { format => "%{message}"}

它看起来像这样:

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