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

Logstash连接CloudSQL PostgreSQL报错:找不到org.postgresql.Driver类

问题描述

想用Logstash查询CloudSQL PostgreSQL实例,但没找到相关示例。已执行命令构建postgres-socket-factory jar包:
mvn -P jar-with-dependencies clean package -DskipTests
并将生成的jar作为Logstash JDBC驱动配置,配置内容如下:

input {
    jdbc {
        jdbc_driver_library => "/Users/gustavollermalylarrain/Documents/proyectos/labs/cloud-sql-jdbc-socket-factory/jdbc/postgres/target/postgres-socket-factory-1.6.4-SNAPSHOT.jar"
        jdbc_driver_class => "org.postgresql.Driver"
        jdbc_connection_string => "jdbc:postgresql:///people?cloudSqlInstance=cosmic-keep-148903:us-central1:llermaly&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=postgres&password=postgres"
        statement => "SELECT * FROM people;"
        jdbc_user => "postgres"
        jdbc_password => "postgres"
    }
}

output {
    stdout {
        codec => rubydebug {
        }
    }
}

运行时出现错误:

Error: java.lang.ClassNotFoundException: org.postgresql.Driver. Are you sure you've included the correct jdbc driver in :jdbc_driver_library?

请问遗漏了什么步骤?

解决方案

核心问题是:postgres-socket-factory jar包仅包含CloudSQL连接所需的SocketFactory实现,不包含PostgreSQL JDBC核心驱动,所以Logstash找不到org.postgresql.Driver类。

按以下步骤修正:

  • 下载与你的PostgreSQL版本兼容的官方JDBC驱动jar包(比如42.6.x系列),放到可访问路径。
  • 修改Logstash配置中的jdbc_driver_library,同时指定两个jar包路径:macOS/Linux用冒号分隔,Windows用分号分隔:
    jdbc_driver_library => "/Users/gustavollermalylarrain/Documents/proyectos/labs/cloud-sql-jdbc-socket-factory/jdbc/postgres/target/postgres-socket-factory-1.6.4-SNAPSHOT.jar:/path/to/postgresql-42.6.0.jar"
    
  • 你的jdbc_connection_string已包含user和password参数,可删除配置里的jdbc_user和jdbc_password,避免重复冲突。

修正后的完整配置示例:

input {
    jdbc {
        jdbc_driver_library => "/Users/gustavollermalylarrain/Documents/proyectos/labs/cloud-sql-jdbc-socket-factory/jdbc/postgres/target/postgres-socket-factory-1.6.4-SNAPSHOT.jar:/path/to/postgresql-42.6.0.jar"
        jdbc_driver_class => "org.postgresql.Driver"
        jdbc_connection_string => "jdbc:postgresql:///people?cloudSqlInstance=cosmic-keep-148903:us-central1:llermaly&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=postgres&password=postgres"
        statement => "SELECT * FROM people;"
    }
}

output {
    stdout {
        codec => rubydebug
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:30:53