Logstash 主类 JvmOptionsParser 未找到/无法加载

问题描述 投票:0回答:1

我已经被这个问题困扰很长一段时间了,任何帮助将不胜感激。

所以我有一个包含 Elastic Stack 服务的 docker compose,以及一个 Cassandra 数据库。

我正在尝试使用 CassandraJDBC42.jar 驱动程序通过 Logstash 将数据从 Cassandra 数据库索引到 ElasticSearch,我通过 docker 卷安装该驱动程序。

每当我运行服务时

docker compose up
(版本 2 Docker Compose),除了 Logstash 服务之外,一切都运行顺利,它不会启动 - 这是日志中的错误。

Using bundled JDK: /usr/share/logstash/jdk
Error: Could not find or load main class org.logstash.launchers.JvmOptionsParser 
Caused by: java.lang.ClassNotFoundException: org.logstash.launchers.JvmOptionsParser

这就是 Docker Compose Logstash 服务。

 logstash:
    image: logstash:7.17.18
    container_name: logstash
    # restart: always
    volumes:
      - logstash_data:/usr/share/logstash/data
      - ./cassandra-driver/:/usr/share/logstash/logstash-core/lib/jars # MOUNTING OF THE DRIVER
      - ./logstash/logstash.conf:/logstash_dir/logstash.conf
    command: logstash -f /logstash_dir/logstash.conf
    depends_on:
      - elasticsearch
    ports:
      - "9600:9600"
    environment:
      LS_JAVA_OPTS: "-Xmx256m -Xms256m"
    networks:
      - elastic

如果我卸下驱动器的安装,一切都会顺利进行。

尝试了不同版本的图片,问题依然存在。

尝试了不同的驱动程序,还是一样。

尝试在没有驱动的情况下运行容器,进入内部,安装openjdk-11,再次挂载驱动,还是一样。

java docker elasticsearch logstash elk
1个回答
0
投票

已修复,问题是卷的映射,它需要主机和容器上包含的确切路径和文件。

#OLD ./cassandra-driver/:/usr/share/logstash/logstash-core/lib/jars

#FIX ./cassandra-driver/CassandraJDBC42.jar:/usr/share/logstash/logstash-core/lib/jars/CassandraJDBC42.jar

logstash.conf 文件也是如此。

© www.soinside.com 2019 - 2024. All rights reserved.