【问题标题】:Unable to start logstash using mongoDB config?无法使用 mongoDB 配置启动 logstash?
【发布时间】:2015-07-27 21:08:33
【问题描述】:

我将 logstash-1.5.2 与 mongodb 3.0.4 一起使用。我正在尝试使用以下不起作用的配置启动logstash。


input{
    stdin{
    }
}

output {
  mongodb {
    database => "logdb"    
    collection => "plain" 
    uri => "mongodb://localhost:27017" 
  } }

我面临以下错误:

./logstash -f conf/mongo.conf

报告的错误是: 未初始化的常量 Mongo::URIParser

请帮忙。

【问题讨论】:

    标签: mongodb logstash


    【解决方案1】:

    该问题是由最新版本的 logstash-output-mongodb 中的错误引起的。请参阅issue reported on github。可以通过更改 mongodb 插件中的几行来修复它。 (请小心,因为这是一个既不支持身份验证也不支持远程服务器的 hacky 解决方案。)

    here 所述更改 mongo.rb 文件的行。 (路径应该类似于/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-mongodb-0.1.4/lib/logstash/outputs/mongodb.rb 您可以在错误消息中找到确切的路径。)

    替换:

        uriParsed=Mongo::URIParser.new(@uri)
        conn = uriParsed.connection({})
        if uriParsed.auths.length > 0
          uriParsed.auths.each do |auth|
            if !auth['db_name'].nil?
              conn.add_auth(auth['db_name'], auth['username'], auth['password'], nil)
            end 
          end
          conn.apply_saved_authentication()
        end
        @db = conn.db(@database)
    

    作者:

        client = Mongo::Client.new([ '127.0.0.1:27017' ])
        @db = client.use(@database)
    

    并替换:

    @db.collection(event.sprintf(@collection)).insert(document)
    

    作者:

    @db.database.collection(event.sprintf(@collection)).insert_one(document)
    

    我自己在几个 logstash 设置中遇到了这个问题。每次换行都对我有用。

    【讨论】:

      猜你喜欢
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      • 2013-04-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多