Синхронизация SQL Server с Elasticsearch через Logstash - повторной передачи не происходит - PullRequest
0 голосов
/ 18 сентября 2018

Справочная информация: Мы выполняем POC синхронизации данных журнала ошибок SQL Server дляasticsearch (ES), чтобы создать панель управления в kibana.Я использовал Logstash с входным плагином jdbc для перемещения данных таблицы сервера SQL в (ES), это удалось.В таблице журнала было около 5000 записей, каждая из которых была перемещена в ES.

Постановка задачи: Для тестирования я удалил индекс из ES, который был ранее синхронизирован Logstash, и запустилLogstash снова с тем же входным файлом конфигурации.Но никакие записи не были перемещены. Если я добавляю новую запись в таблицу SQL Server, это отражало, но старые записи (5000) не обновлялись.

Config Ниже приведен мой файл конфигурациииспользуется для синхронизации

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 голосов
/ 28 сентября 2018

Я нашел и решил эту проблему.

Проблема, которую я обнаружил, заключается в том, что все поля чувствительны к регистру, она принимает, только если в строчная буква.

Ниже приведено изменение, которое я сделал, и оно отлично работает для меня.

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}"
  }
}

и никаких изменений в разделе input .

Спасибо за вашу поддержку.

...