sql >> Databáze >  >> NoSQL >> MongoDB

Nelze spustit logstash pomocí konfigurace mongoDB?

Problém je způsoben chybou v nejnovější verzi logstash-output-mongodb. Podívejte se prosím na problém nahlášený na github . Lze to opravit změnou několika řádků uvnitř pluginu mongodb. (Prosím, buďte opatrní, protože se jedná o hackerské řešení, které nepodporuje ověřování ani vzdálené servery.)

Změňte řádky svého souboru mongo.rb, jak je uvedeno zde . (cesta by měla být něco jako /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-mongodb-0.1.4/lib/logstash/outputs/mongodb.rb Přesnou cestu najdete v chybové zprávě.)

Nahradit:

    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)

od:

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

A nahradit:

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

od:

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

Sám jsem měl tento problém v několika nastaveních logstash. Změna řádků mi pokaždé pomohla.




  1. mongodb findOne s vysvětlením

  2. mongo c driver:jak se dotazovat na dokumenty s _id v seznamu?

  3. Databáze MongoDB, ekvivalent pro SELECT sloupec1, sloupec2 FROM tbl

  4. Aktualizace MongoDB:Vygenerujte nové pole na základě existujícího pole nebo aktualizujte na místě