使用Logstash JDBC Input插件动态连接到多个数据库

时间:2016-03-29 15:31:01

标签: elasticsearch logstash logstash-jdbc

我正在使用Logstash JDBC输入插件从数据库中读取数据并将其索引到Elastic Search中。 我为每个客户都有单独的数据库,我想逐个连接它们以获取数据?

JDBC-Input插件或Logstash中是否有任何配置或参数可以连接到多个数据库?

例如

input {
  jdbc {
    jdbc_driver_library => "mysql-connector-java-5.1.36-bin.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://localhost:3306/MYDB"
    //MYDB will be set dynamically. 
    jdbc_user => "mysql"
    parameters => { "favorite_artist" => "Beethoven" }
    schedule => "* * * * *"
    statement => "SELECT * from songs where artist = :favorite_artist"
  }
}

只有我能想到的解决方案正在编写脚本,它将更新logstash配置以逐个连接到指定的数据库并通过它运行logstash。

1 个答案:

答案 0 :(得分:-1)

让我更新一下 - 出于同样的目的,我使用了两个输入JDBC部分,但只考虑了第一部分。

input {
    jdbc {
        jdbc_connection_string => "XXXX"
        jdbc_user => "XXXX"
        jdbc_password => "XXXX"
        statement => "select * from product"
        jdbc_driver_library => "/usr/share/logstash/ojdbc7.jar"
        jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
        }
 jdbc {
        jdbc_connection_string => "YYYY"
        jdbc_user => "YYYYY"
        jdbc_password => "YYYY"
        statement => "select * from product"
        jdbc_driver_library => "/usr/share/logstash/ojdbc7.jar"
        jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
        }
}
output {
    elasticsearch {
        hosts => "localhost:9200"
        user => "XXX"
        password => "XXXX"
        index => "XXXX"
        document_type => "XXXX"
        }
}

-