【发布时间】:2019-01-13 09:25:10
【问题描述】:
我正在尝试使用logstash 和jdbc mysql 驱动程序将mysql 表中的数据导出到弹性搜索,以及docker 容器中的每个进程。我的问题是(没有错误)它们没有发送到弹性搜索。
我的 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 时的输出:
【问题讨论】:
-
你的MySQL服务器IP地址错误
-
您确定地址 0.0.2.22:3306 可以从 logstash 容器中提取吗?尝试执行
ping、telnet或curl命令 -
mysql的IP不错,我只是把前2个数字改了0.0。我可以使用来自执行 docker run 的同一台机器的 jdbc 输入中的信息连接到 mysql。我的意思是这行得通:
mysql -h "0.0.2.22" -u admin -ppassword -
你能给我们看看 Logstash 的日志吗?
-
是的,完成了。这是我用来运行 logstash 的命令的输出
标签: docker elasticsearch jdbc logstash logstash-jdbc