0

我正在尝试使用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 时的输出:

logstash 执行输出

日志存储错误 2

4

2 回答 2

1
于 2018-08-06T12:45:03.027 回答
0

除了我的 SQL 语句中的错误之外,我还需要指定容器的主机 ip(在我的情况下为 172.17.0.2)而不是使用 127.0.0.1:9200

于 2018-08-06T13:26:20.230 回答