【发布时间】:2018-09-07 14:20:42
【问题描述】:
我正在使用 Logstash 2.4.1 将数据加载到 Elasticsearch 2.4.6。 我有以下 Logstash 配置:
input {
jdbc {
jdbc_connection_string => "jdbc:oracle:thin:@database:1521:db1"
jdbc_user => "user"
jdbc_password => "password"
jdbc_driver_library => "ojdbc6-11.2.0.jar"
jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
parameters => { "id" => 1 }
statement => "SELECT modify_date, userName from user where id = :id AND modify_date >= :sql_last_value"
schedule => "*/1 * * * *"
tracking_column => modify_date
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "index1"
document_type => "USER"
}
stdout { codec => rubydebug }
}
因此,每分钟,它都会去数据库检查是否有 Elastic 的新数据。 它工作得很好,但有一个问题: 我们有大约 100 个客户端,它们都在同一个数据库实例中。
这意味着我有 100 个脚本,并且将运行 100 个 Logstash 实例,这意味着 100 个打开的连接:
nohup ./logstash -f client-1.conf Logstash startup
nohup ./logstash -f client-2.conf Logstash startup
nohup ./logstash -f client-3.conf Logstash startup
nohup ./logstash -f client-4.conf Logstash startup
nohup ./logstash -f client-5.conf Logstash startup
and so on...
这太糟糕了。
有什么方法可以为我的所有脚本使用相同的连接吗? 所有这些脚本之间的唯一区别是参数 id 和索引名称,每个客户端都有不同的 id 和不同的索引:
parameters => { "id" => 1 }
index => "index1"
有什么想法吗?
【问题讨论】:
标签: java elasticsearch logstash