SQL Server通过Logstash与Elasticsearch同步-不会发生重新传输

时间:2018-09-18 15:51:32

标签: elasticsearch logstash logstash-jdbc

背景: 我们正在对Sync SQL Server错误日志数据进行POC到elasticsearch(ES),以将仪表板引入kibana。 我使用Logstash和jdbc输入插件将sql server表数据移动到(ES),成功了。在日志表中,大约有5000条记录,每条记录都移至ES。

问题陈述: 为了进行测试,我从ES中删除了先前由Logstash同步的索引,然后再次使用相同的输入配置文件运行Logstash。但是没有记录被移动如果我将新记录添加到SQL Server表中,这可以反映出来,但是旧记录(5000)并未更新。

配置 以下是我用于同步的配置文件

input {
  jdbc {
    #https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html#plugins-inputs-jdbc-record_last_run
    jdbc_connection_string => "jdbc:sqlserver://localhost:40020;database=application;user=development;password=XXX$"
    jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"    

    jdbc_user => nil
        # The path to our downloaded jdbc driver
    jdbc_driver_library => "C:\Program Files (x86)\sqljdbc6.2\enu\sqljdbc4-3.0.jar"
        # The name of the driver class for SqlServer
    jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
        # Query for testing purpose     
    schedule => "* * * * *"
    last_run_metadata_path => "C:\Software\ElasticSearch\logstash-6.4.0\.logstash_jdbc_last_run"
    record_last_run => true
    clean_run => true
    statement => "  select * from Log"  

  }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "application_log"
    #document_id is a unique id, this has to be provided during syn, else we may get duplicate entry in ElasticSearch index.
    document_id => "%{Id}"
  }
}

请帮助我,解释发生了什么问题。

Logstash版本:6.4.0 Elasticsearch版本:6.3.1

预先感谢

1 个答案:

答案 0 :(得分:0)

我找到并解决了此问题。

我发现的问题是每个字段都区分大小写,只有在小写字母时才接受。

下面是我所做的更改,它对我来说很好。

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "application_log"
    #document_id is a unique id, this has to be provided during syn, else we may get duplicate entry in ElasticSearch index.
    document_id => "%{Id}"
  }
}

输入部分中没有任何更改。

感谢您的支持。