【问题标题】:Logstash sql_last_value is not updatingLogstash sql_last_value 未更新
【发布时间】:2020-04-19 10:14:26
【问题描述】:

我希望通过使用logstash配置将记录从一个mysql表迁移到elasticsearch。我正在检查文件 logstash_jdbc_last_run_issued 没有改变/更新,所以 sql_last_value 也没有改变。当我在表工件上添加一条记录时,索引 emp7 正在插入复制信息而不会停止。所以它的指数越来越高。除非我打破了 logstash 进程。

Logstash 配置:

input {
 jdbc {
        jdbc_driver_library => "e:\Data\logstash\bin\mysql-connector-java-5.1.18-bin.jar"
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/kibana"
        jdbc_user => "userdb"
        jdbc_password => "passdb"
        last_run_metadata_path => "e:\Data\logstash\bin\logstash_jdbc_last_run_issued"
        tracking_column => "issuedDate"
        tracking_column_type => "numeric"
        use_column_value=>true
        statement => "SELECT serial, name, issuedDate FROM artifact where issuedDate > :sql_last_value;  "
        schedule => " * * * * * *"  
    }
}
output {
    elasticsearch {
        hosts => "http://127.0.0.1:9200"
        index => "emp7"
        document_type => "doc"
        user => "user"
        password => "pass"
    }
    stdout {
        codec => rubydebug
    }
}

表结构信息:工件

serial     varchar(40)
name       varchar(40)
issuedDate bigint(20)

我给你logstash调试结果:

[2019-12-30T11:38:46,004][INFO ][logstash.inputs.jdbc     ] (0.000000s) SELECT serial, name, issuedDate FROM artifact where issuedDate > 0;
[2019-12-30T11:38:46,004][WARN ][logstash.inputs.jdbc     ] tracking_column not found in dataset. {:tracking_column=>"issuedDate"}

文件 logstash_jdbc_last_run_issued 内容:

--- 0

我正在使用 logstash 6.0、elasticsearch 6.0 和 kibana 6.0

我的问题是,logstash 配置缺少什么?

【问题讨论】:

  • 我认为elasticsearch输出插件需要一个数组中的主机值。不确定这是否可以解决,但请尝试一下。看看这个:elastic.co/guide/en/logstash/6.8/config-examples.html
  • 我更新为:hosts => ["127.0.0.1:9200"] 但结果相同。问题是logstash 只需要插入文档一次,因为我在mysql 表中添加了一条记录,但它正在复制,并且再次同一记录不停歇。

标签: mysql elasticsearch logstash kibana


【解决方案1】:

我知道它发生了什么。 该问题与数据集中未找到的 tracking_column 有关。 {:tracking_column...}。

我在 jdbc 部分添加了 lowercase_column_names => false。此外,我添加了 clean_run => false。最后它开始工作。默认情况下,我正在理解 logstash 小写的 tracking_column。所以我禁用了它。

input {
 jdbc {
        jdbc_driver_library => "e:\Data\logstash\bin\mysql-connector-java-5.1.18-bin.jar"
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/kibana"
        jdbc_user => "userdb"
        jdbc_password => "passdb"
        last_run_metadata_path => "e:\Data\logstash\bin\logstash_jdbc_last_run_issued"
        tracking_column => "issuedDate"
        use_column_value=>true
        lowercase_column_names => false
        clean_run => false
        statement => "SELECT serial, name, issuedDate FROM artifact where issuedDate > :sql_last_value;  "
        schedule => " * * * * * *"  
    }
}
output {
    elasticsearch {
        hosts => ["http://127.0.0.1:9200"]
        index => "emp7"
        document_type => "doc"
        user => "user"
        password => "pass"
    }
    stdout {
        codec => rubydebug
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2017-03-14
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多