Я пытаюсь проиндексировать коллекцию mongodb в упругом поиске через logstash и плагин jdbc. У меня есть следующая конфигурация:
mypipeline.config
input {
jdbc {
jdbc_driver_library => ""
jdbc_driver_class => "com.dbschema.MongoJdbcDriver"
jdbc_user => "myuser"
jdbc_password => "mypassword"
jdbc_connection_string => "jdbc:mongodb://localhost:27017/mydb"
statement => "db.getCollection('mycollection').find({})"
}
}
output {
stdout { codec => rubydebug}
elasticsearch {
hosts => ["http://localhost:9200/"]
index => "myindex"
}
}
, где myuser
и mypassword
- мои учетные данные. mydb
и mycollection
- это база данных и коллекция соответственно.
Мне известно об ошибке, которая требует от вас сохранения драйвера jdbc непосредственно в <logstash install>/logstash-core/lib/jars/
. (см. issue )
Всякий раз, когда я пытаюсь запустить logstash, выдается следующее сообщение об ошибке:
com.mongodb.MongoCommandException: Команда не выполнена с ошибкой 13(Несанкционировано): «на сервере не зарегистрировано ни одного пользователя»: 27017.
Насколько я понимаю, logstash
не может подключиться к mongodb
. Кажется, что следующий фрагмент указывает, что logstash пытается подключиться к fictivDb
вместо mydb
.
[2019-10-16T09: 15: 30,938] [DEBUG] [org.mongodb.driver.protocol.command] Отправка команды '{"listCollections": 1, "cursor": {}, "nameOnly": true, "$ db": "fictivDb", "$ clusterTime": {"clusterTime": {"$отметка времени ": {" t ": 1571217330," i ": 1}}," signature ": {" hash ": {" $ binary ": {" base64 ":" T9SxLwL0XXNHWUaYp9zUGk2em + 8 = "," subType ":" "00 "}}," keyId ": 6713559952717250561}}," lsid ": {" id ": {" $ binary ": {" base64 ":" 9GHQ2TZ / Tuuv / 2SyTVe8Lg == "," subType ":" 04 "}}}, "$ readPreference": {"mode": "primaryPreferred"}} 'с идентификатором запроса 8 к базе данных fictivDb при подключении [connectionId {localValue: 2, serverValue: 760151}] к локальному хосту сервера: 27017
В журнале указывается, что драйвер найден и что logstash «видит» mongodb. У меня ошибка в конфигурации или есть еще одна ошибка, чтобы обойти?