【问题标题】:Logstash jdbc not sending dataLogstash jdbc不发送数据
【发布时间】: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 时的输出:

logstash execution output

logstash error 2

【问题讨论】:

  • 你的MySQL服务器IP地址错误
  • 您确定地址 0.0.2.22:3306 可以从 logstash 容器中提取吗?尝试执行pingtelnetcurl 命令
  • 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


【解决方案1】:

"SELECT * FROM contact” ” 更改为"

【讨论】:

  • 哦,谢谢。没看到那个。 sql 命令是从我认为的 word 文档中复制的。我现在有弹性搜索拒绝连接,但我会尝试自己解决它
  • 我认为 ES 的默认 docker 镜像启用了 x-pack,可能需要禁用它或提供凭据。
  • 你认为这可能是我的问题吗?我更新了我的第一条消息
  • 啊,我看你ES的IP错了?除非它与 Logstash 在同一节点上运行(似乎不是来自 Dockerfile)。
  • 它现在可以工作了,我在测试时犯了一些错误,它已修复。我的 ES 实例中有一个新的索引(联系人)。谢谢你
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 2017-11-12
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    相关资源
    最近更新 更多