You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Logstash启动报错:找不到主类JvmOptionsParser求助

问题解决:Logstash挂载Cassandra驱动后启动失败

问题根源

你当前将Cassandra驱动挂载到了/usr/share/logstash/logstash-core/lib/jars目录,这个目录是Logstash存放核心依赖JAR的位置,直接挂载会覆盖原目录下的所有核心文件,导致Logstash启动时找不到org.logstash.launchers.JvmOptionsParser这类核心类,从而启动失败。

解决方案

1. 修改驱动挂载路径

将驱动挂载到Logstash专门用于存放第三方JAR的目录,推荐以下两个路径之一:

  • /usr/share/logstash/vendor/jars:官方推荐的第三方依赖存放目录
  • /usr/share/logstash/plugins/jars:插件依赖存放目录

修改后的Docker Compose中Logstash服务的volumes配置如下:

logstash:
    image: logstash:7.17.18
    container_name: logstash
    # restart: always
    volumes:
      - logstash_data:/usr/share/logstash/data
      - ./cassandra-driver/CassandraJDBC42.jar:/usr/share/logstash/vendor/jars/CassandraJDBC42.jar # 挂载单个驱动文件而非整个目录
      - ./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

注意:不要挂载整个目录,只挂载单个驱动JAR文件,避免覆盖目标目录下的其他文件。

2. 验证Logstash配置文件

确保logstash.conf中的JDBC驱动路径指向正确的挂载位置,示例配置片段:

input {
  jdbc {
    jdbc_driver_library => "/usr/share/logstash/vendor/jars/CassandraJDBC42.jar"
    jdbc_driver_class => "com.datastax.driver.core.Driver"
    jdbc_connection_string => "jdbc:cassandra://cassandra-host:9042/keyspace"
    jdbc_user => "your-user"
    jdbc_password => "your-password"
    statement => "SELECT * FROM your_table"
  }
}

3. 重启服务

执行docker compose down停止所有服务,再执行docker compose up -d重新启动,Logstash应该可以正常启动并加载Cassandra驱动。

额外注意事项

  • 确保Cassandra JDBC驱动版本与Logstash(7.17.18)、Cassandra版本兼容,避免因版本不匹配导致的其他异常。
  • 不要修改Logstash核心目录的内容,所有第三方依赖都应放在专门的第三方目录中。

内容的提问来源于stack exchange,提问作者therdean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 00:05:04