Logstash:如何输出选择的字段

时间:2014-08-06 09:15:04

标签: output logstash

我有一个logstash exe,它从RabbitMQ队列中读取JSON事件。

input {
  rabbitmq  {
    codec => json
    ...
  }
}

我需要有2个输出。第一个是带有整个JSON文档的MongoDB输出(没问题,它可以工作),第二个是另一个rabbitMQ队列,但我不需要整个JSON。我只需要选择一些领域。

我该怎么做?

谢谢

2 个答案:

答案 0 :(得分:3)

您使用带有mutate条目的remove_field过滤条件来删除您不想要的所有字段。如果您不知道需要删除的所有字段是什么,则需要创建一个ruby过滤器,迭代事件并删除任何不在您想要的列表中的字段。

ruby​​代码看起来像这样:

filter {
    ruby {
        code => " 
                event.to_hash.each {|k,v|
                        if (!['a','b','c'].include?(k))
                                event.remove(k)
                        end
                }"
    }
}

其中['a','b','c']是您要保留的字段列表。

答案 1 :(得分:0)

或者您可以使用以下编解码器:https://github.com/payscale/logstash-codec-fieldselect它选择一些输出字段。就像上面一样但没有红宝石过滤器。