elasticsearch,logstash,webhooks,Mysql,elasticsearch,Logstash,Webhooks" /> elasticsearch,logstash,webhooks,Mysql,elasticsearch,Logstash,Webhooks" />

如何自动将数据从mysql更新到logstash

如何自动将数据从mysql更新到logstash,mysql,elasticsearch,logstash,webhooks,Mysql,elasticsearch,Logstash,Webhooks,目前我正在使用Mysql处理弹性堆栈,使用Logstash在弹性搜索中可以使用Mysql数据库中的数据,但当新数据输入Mysql数据库时,我需要重新启动Logstash,或者可以使用Logstash配置文件中的Schedule来完成 input { jdbc { jdbc_connection_string => "jdbc:mysql://localhost:3306/testdb" # The user we wish to execute our statem

目前我正在使用Mysql处理弹性堆栈,使用Logstash在弹性搜索中可以使用Mysql数据库中的数据,但当新数据输入Mysql数据库时,我需要重新启动Logstash,或者可以使用Logstash配置文件中的Schedule来完成

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"
    }
  }
但这不是一个好方法,我正在考虑使用web钩子,但没有可用的资源,我尝试了文档页面中的Logstash HTTP输入插件,但没有得到任何帮助


请提供帮助。

您只能下载最近的数据,比如说每15分钟使用特殊查询:

SELECT * FROM ghijkl" WHERE EVENT_TIME_OCCURRENCE_FIELD > :sql_last_value
将插入最新记录的时间戳来代替
:sql\u last\u值。第一次运行查询时,
tracking\u列
值设置为
01.01.1970

日志存储所需的配置:

schedule => "*/15 * * * *"
use_column_value => true
tracking_column => 'EVENT_TIME_OCCURRENCE_FIELD'
对于每个输入,您还应该指定
last\u run\u metadata\u path
参数,以避免将来出现问题,当您有许多输入,并且一些输入使用相同的表但不同的模式时,元数据可能会被覆盖并产生意外的结果

last_run_metadata_path => "PATH_TO_FILE_FOR_META_DATA"

什么值可以分配给EVENT_TIME_OCCURRENCE_field,我想知道的是,如果一些数据插入到mysql数据中,那么mysql可以通知Logstash,并使用上面的方法Logstash检查进一步的更新,这是一种昂贵的方法,你明白我的意思了吗?只要你正确配置了索引,这是最有效的方法<代码>其中事件\u时间\u发生\u字段>:sql\u最后一个\u值
此条件对于具有索引的数据库不是问题。即使您使用http等编写自己的脚本连接到Logstash,它也必须使用类似的查询定期检查数据库中的新记录,因此总体而言,这只是不必要的复杂性。它通常是表中的时间戳,本列描述记录插入数据库的时间。Logstash将跟踪此列值,以推断哪些记录是新的。当您的表中没有任何时间戳时,您也可以使用数字字段,例如id。当然有,但您必须编写自己的应用程序来处理它。您真的需要快速从DB获取数据吗?只要您不需要超过5-10秒的频繁数据,并且数据库表不是非常庞大,那么日志存储计划作业就不会使数据库过载。制作自己的通知程序需要一些时间,这可能只是浪费时间。