logstash mongodb输出和ISODate类型

时间:2014-07-21 12:55:09

标签: mongodb logstash isodate

我在尝试将日期类型字段转换为mongoDB格式(ISODate)时遇到了一些麻烦。

我有一个带有JSON消息的RabbitMQ队列。这些消息有一个Date属性,如下所示:

Date : "2014-05-01T14:53:34.25677Z"

我的logstash服务读取RabbitMQ队列并将消息注入mongoDB。

这是我的logstash配置文件:

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

output {

    mongodb {
        codec => json
        collection => "log"
        isodate => true
        database => "Test"
        uri => "mongodb://localhost:27017"
    }
}

我的问题是我的Date属性被改为字符串而不是Date。如何告诉Logstash将我的Date字段作为ISODate字段插入mongoDB?

谢谢

1 个答案:

答案 0 :(得分:3)

在将字符串插入MongoDB之前,您应该使用logstash Date过滤器将字符串转换为Date:http://logstash.net/docs/1.4.2/filters/date

不知道你的完整架构,但它应该看起来像这样:

filter {   
  date {
    match => [ "Date", "ISO8601" ]   
    } 
}

请注意使用“ISO8601” - 看起来与您收到的格式相符,但您可能需要稍微玩一下。在测试时,我强烈建议在测试运行中使用stdout输出选项,以便在插入MongoDB之前轻松查看已完成的操作:

output {
  stdout { codec => rubydebug }
}