как автоматизировать обновление данных из mysql в logstash - PullRequest
0 голосов
/ 28 мая 2018

В настоящее время я работаю над Elastic Stack с Mysql, все работает нормально, например, данные в базе данных mysql доступны в Elastic-search с использованием Logstash, но когда новые данные вводятся в mysql db, мне нужно перезапустить Logstash, или это можно сделать с помощью Scheduleв конфигурационном файле Logstash

input {

  jdbc { 
    jdbc_connection_string => "jdbc:mysql://localhost:3306/testdb"
    # The user we wish to execute our statement as
    jdbc_user => "root"
    jdbc_password => "ankit"
    # The path to our downloaded jdbc driver
    jdbc_driver_library => "/home/ankit/Downloads/mysql-connector-java-5.1.38.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    #run logstash at an interval of on minute
    #schedule => "* * * * * *"
    # our query
    statement => "SELECT * FROM ghijkl"
    }
    jdbc { 
    jdbc_connection_string => "jdbc:mysql://localhost:3306/testdb"
    # The user we wish to execute our statement as
    jdbc_user => "root"
    jdbc_password => "ankit"
    # The path to our downloaded jdbc driver
    jdbc_driver_library => "/home/ankit/Downloads/mysql-connector-java-5.1.38.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    #run logstash at an interval of on minute
    #schedule => "* * * * * *"
    # our query
    statement => "SELECT * FROM abcdef"
    }
  }

, но это не очень хороший подход, и я думаю использовать веб-хуки, но для этого нет доступных ресурсов, я попробовал подключить плагин Logstash HTTP input со страницы документациино никакой помощи от этого нет.

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 28 мая 2018

Вы можете загружать только последние данные, скажем, каждые 15 минут, используя специальный запрос:

SELECT * FROM ghijkl" WHERE EVENT_TIME_OCCURRENCE_FIELD > :sql_last_value

Вместо :sql_last_value будет вставлена ​​метка времени самой последней записи.При первом запуске запроса tracking_column устанавливается значение 01.01.1970.

Требуемая конфигурация для Logstash:

schedule => "*/15 * * * *"
use_column_value => true
tracking_column => 'EVENT_TIME_OCCURRENCE_FIELD'

Для каждого входа вы также должны указать параметр last_run_metadata_path, чтобы избежать проблем в будущем, когда у вас много входов, а некоторые используютта же таблица, но разные схемы, тогда метаданные могут быть переопределены и привести к неожиданным результатам.

last_run_metadata_path => "PATH_TO_FILE_FOR_META_DATA"
...