我正在尝试从mysql表中导出数据,以便在docker容器中的每个进程中使用logstash和jdbc mysql驱动程序进行弹性搜索。我的问题是(没有错误)他们什么也没有发送给弹性搜索。
我的Dockerfile:
FROM elastic/logstash:6.3.0
ENV https_proxy=
ENV http_proxy=
COPY ./mysql-connector-java-5.1.46/mysql-connector-java-5.1.46.jar /tmp/mysql-connector-java-5.1.46.jar
COPY ./logstash.conf /tmp/logstash.conf
COPY ./logstash.yml /usr/share/logstash/config/logstash.yml
RUN logstash-plugin install logstash-input-jdbc
我使用以下命令运行它:
docker run -d --rm --name=logstach -v /data/logstash:/home/logstash logstash bin/logstash -f /tmp/logstash.conf
这是我的logstash.conf:
input {
jdbc {
jdbc_driver_library => "/tmp/mysql-connector-java-5.1.46.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://0.0.2.22:3306/itop_db"
jdbc_user => "admin"
jdbc_password => "password"
statement => "SELECT * FROM contact”
}
}
output {
elasticsearch {
index => "contact"
document_type => "data"
document_id => "%{id}"
hosts => "127.0.0.1:9200"
}
stdout { codec => json_lines }
}
除了在弹性搜索http://localhost:9200/_cat/indices?v中没有新索引以外,所有事情似乎都完成得很好。
这是我运行logstash时的输出:
答案 0 :(得分:0)
"SELECT * FROM contact”
<-这可能是问题。我想您是从互联网复制的?将”
更改为"
答案 1 :(得分:0)
除了我的SQL语句中的错误外,我还需要指定容器的主机IP(在我的情况下为172.17.0.2),而不是使用127.0.0.1:9200