De forma predeterminada, el complemento logstash-input-jdbc ejecutará su declaración SELECT una vez y luego se cerrará. Puede cambiar este comportamiento agregando un schedule
parámetro
con una expresión cron a su configuración, como esta:
input {
jdbc {
jdbc_driver_library => "C:/logstash/lib/mysql-connector-java-5.1.37-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/test"
jdbc_user => "root"
jdbc_password => ""
statement => "SELECT * FROM transport.audit"
schedule => "* * * * *" <----- add this line
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
}
}
El resultado es que la instrucción SELECT ahora se ejecutará cada minuto.
Si tenía un campo de fecha en su tabla MySQL (pero no parece ser el caso), también podría usar el sql_last_start
predefinido parámetro para no volver a indexar todos los registros en cada ejecución. Ese parámetro se puede usar en su consulta de esta manera:
statement => "SELECT * FROM transport.audit WHERE your_date_field >= :sql_last_start"