Jdbc 日志存储:错误org.postgres.Driver未加载

Jdbc 日志存储:错误org.postgres.Driver未加载,jdbc,logstash,Jdbc,Logstash,我需要从PostgreSQL数据库中获取数据,并将其索引到Elasticsearch中。 当我运行/opt/logstash-2.3.3/bin/logstash-v-f es_table.logstash.conf 我收到以下错误: Pipeline aborted due to error {:exception=>#<LogStash::ConfigurationError: org.postgres.Driver not loaded. Are you sure you

我需要从PostgreSQL数据库中获取数据,并将其索引到Elasticsearch中。

当我运行
/opt/logstash-2.3.3/bin/logstash-v-f es_table.logstash.conf

我收到以下错误:

Pipeline aborted due to error 
{:exception=>#<LogStash::ConfigurationError: org.postgres.Driver not loaded. 
Are you sure you've included the correct jdbc driver in :jdbc_driver_library?>, :backtrace=>["/opt/logstash-2.3.3/vendor/bundle/jruby/1.9/gems/logstash-input-jdbc-3.0.2/lib/logstash/plugin_mixins/jdbc.rb:156:in `prepare_jdbc_connection'", "/opt/logstash-2.3.3/vendor/bundle/jruby/1.9/gems/logstash-input-jdbc-3.0.2/lib/logstash/plugin_mixins/jdbc.rb:148:in `prepare_jdbc_connection'", "/opt/logstash-2.3.3/vendor/bundle/jruby/1.9/gems/logstash-input-jdbc-3.0.2/lib/logstash/inputs/jdbc.rb:167:in `register'", "/opt/logstash-2.3.3/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/pipeline.rb:330:in `start_inputs'", "org/jruby/RubyArray.java:1613:in `each'", "/opt/logstash-2.3.3/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/pipeline.rb:329:in `start_inputs'", "/opt/logstash-2.3.3/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/pipeline.rb:180:in `start_workers'", "/opt/logstash-2.3.3/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/pipeline.rb:136:in `run'", "/opt/logstash-2.3.3/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.3-java/lib/logstash/agent.rb:473:in `start_pipeline'"], :level=>:error}
jdbc4驱动程序存在。我也尝试了jdbc3,但没有成功

ls /usr/share/java | grep postgresql-jdbc
postgresql-jdbc3-9.2.jar
postgresql-jdbc3.jar
postgresql-jdbc4-9.2.jar
postgresql-jdbc4.jar
驱动程序类位于:

jar tf /usr/share/java/postgresql-jdbc4.jar | grep -i driver
org/postgresql/Driver$1.class
org/postgresql/Driver$ConnectThread.class
org/postgresql/Driver.class
org/postgresql/util/PSQLDriverVersion.class
META-INF/services/java.sql.Driver
端口5432打开:

telnet 192.168.109.108 5432
Trying 192.168.109.108...
Connected to 192.168.109.108.
Escape character is '^]'.

DB的身份验证有效。

问题是我在驱动程序名中犯了一个错误

我写了
jdbc\u driver\u class=>'org.postgres.driver'


正确的名称是
jdbc\u driver\u class=>'org.postgresql.driver'
我通过遵循本文建议的解决方法解决了这个问题

原因:

这是我们在JDK9(Jigsaw)中更改模块时遇到的一个已知问题。类加载器已经看到了一些变化,我们之前添加到一些驱动程序加载中的一个解决方案现在失败了。jdbc输入在JDK 11(9+)中有相同的失败。我们正在进行修复

对我有效的变通方法:

一种“极端”解决方法是将驱动程序文件复制到/logstash core/lib/jars/目录。当logstash通过java启动时,这些jar被添加到正确的JDK类路径中

telnet 192.168.109.108 5432
Trying 192.168.109.108...
Connected to 192.168.109.108.
Escape character is '^]'.