Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 日志存储在docker错误SQL Server&;未加载JDBC_Sql Server_Docker_Logstash - Fatal编程技术网

Sql server 日志存储在docker错误SQL Server&;未加载JDBC

Sql server 日志存储在docker错误SQL Server&;未加载JDBC,sql-server,docker,logstash,Sql Server,Docker,Logstash,构建一个弹性堆栈,我必须在其中连接到SQL Server数据库。因此,我构建了自己的日志存储映像,将JDBC驱动程序导入到容器中 FROM docker.elastic.co/logstash/logstash:6.3.0 USER root COPY mssql-jdbc-6.4.0.jre9.jar /opt/ # Add your logstash plugins setup here RUN logstash-plugin install logstash-input-jdbc # Ex

构建一个弹性堆栈,我必须在其中连接到SQL Server数据库。因此,我构建了自己的日志存储映像,将JDBC驱动程序导入到容器中

FROM docker.elastic.co/logstash/logstash:6.3.0
USER root
COPY mssql-jdbc-6.4.0.jre9.jar /opt/
# Add your logstash plugins setup here
RUN logstash-plugin install logstash-input-jdbc
# Example: RUN logstash-plugin install logstash-filter-json
然后我启动docker编写文件

# Elastic and Kibana config remove for clarity

logstash:
#    image: docker.elastic.co/logstash/logstash:${TAG}
    build: logstash/
    container_name: Logstash
    environment:
      LS_JAVA_OPTS: "-Xmx256m -Xms256m"
    env_file:
      - .env
    ports:
      - '5001:5001'
    volumes:
      - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml
      - ./logstash/pipeline:/usr/share/logstash/pipeline
    depends_on:
      - elasticsearch1
    networks:
      - esnet
这是我的logstash.conf

input {
    jdbc {
           jdbc_driver_library => "/opt/mssql-jdbc-6.4.0.jre9.jar"
           jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
           jdbc_connection_string => "jdbc:sqlserver://****.database.windows.net"
           jdbc_user => "${DB_USERNAME}"
           jdbc_password => "${DB_PASSWORD}"
           statement => "select * from *****.dbo.association"
        }
}

output {
    elasticsearch {
        hosts => ["http://elasticsearch1:9200", "http://elasticsearch2:9200"] 
    }
    stdout {
        codec => rubydebug
    }
}
然后我得到了这个错误:

错误:com.microsoft.sqlserver.jdbc.SQLServerDriver未加载。您确定在:jdbc\u driver\u库中包含了正确的jdbc驱动程序吗


您可以访问docker/opt/mssql-jdbc-6.4.0.jre9.jar,检查文件是否存在,或者您是否拥有正确的权限

或者您可以为javalib绑定另一个文件夹,然后jdbc_驱动程序_库应该是docker容器jdbc_驱动程序_库=>“/usr/share/logstash/javalib/mssql-jdbc-6.4.0.jre9.jar”中的路径


遇到同样的问题,您必须将jdbc驱动程序文件复制到

LOGSTASH_FOLDER/logstash-core/lib/jars/

目录

我明白了。。。别装模作样。。。在这个映像中安装的是Java8,而不是9。
LOGSTASH_FOLDER/logstash-core/lib/jars/