【问题标题】:Logstash in docker error SQL Server & JDBC not loadedDocker 中的 Logstash 错误 SQL Server 和 JDBC 未加载
【发布时间】:2019-11-18 19:00:16
【问题描述】:

构建一个 Elastic 堆栈,我必须在其中连接到 SQL Server 数据库。因此,我构建了自己的 Logstash 映像,并在其中将 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-compose 文件。

# 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_driver_library 中包含了正确的 jdbc 驱动程序吗?

【问题讨论】:

  • 我明白了……别看中了……这张图片中安装的是 Java 8 而不是 9。

标签: sql-server docker logstash


【解决方案1】:

你可以去 docker /opt/mssql-jdbc-6.4.0.jre9.jar 看看文件是否在那里或者你有正确的权限。

或者您可以仅为 javalib 绑定​​另一个文件夹,然后 jdbc_driver_library 应该是 docker 容器中的路径 jdbc_driver_library => "/usr/share/logstash/javalib/mssql-jdbc-6.4.0.jre9.jar"

docker run --rm -it --network="elasticsearch_esnet" -v /data/logstash/lib:/usr/share/logstash/javalib  -v /data/logstash/pipeline/:/usr/share/logstash/pipeline/ docker.elastic.co/logstash/logstash:6.6.2

【讨论】:

    【解决方案2】:

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

    LOGSTASH_FOLDER/logstash-core/lib/jars/
    

    目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      • 1970-01-01
      相关资源
      最近更新 更多