logstash jdbc input插件

参考资料:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html

Jdbc input plugin

描述

使用jdbc input插件,可以将符合jdbc规范的数据库中的数据导入到logstash中。你可以使用cron语法来定期的导入数据,也可以只运行一次载入全部的数据。从数据库抽取的结果集(resultset)中的每一行(row)会转化成logstash的一个事件(event),而结果集中的每一列(column)会转化成为一个field。

驱动

该插件不包含任何的jdbc驱动包,需要在参数jdbc_driver_library 中配置相应的jar包路径。

调度

该插件可以根据设置的调度器定期的执行。配置调度的语法由 rufus-scheduler提供,该语法在cron语法的基础上进行了一些扩展(例如,时区支持).

示例:

* 5 * 1-3 *  从一月到三月,每天早上5点的每分钟都会执行  

0 * * * *   每天每小时的第0分钟执行

0 6 * * * America/Chicago 每天的6:00am(UTC/GMT -5)执行

状态

该插件可以将sql_last_value对应的内容存储到相关的metadata文件中,存储的路径由last_run_metadata_path指定。当执行一个查询的时候,metadata文件会被更新成sql_last_value对应的值。等到下次执行该查询时,logstash会读取metadata文件,并更新sql_last_value。

处理大的结果集

一些jdbc驱动会使用fetch_size来限制从数据库服务端提前请求(pre-fetch)的数据量。可以修改jdbc_fetch_size 参数改变pre-fetch的数量。

示例

下面是一个从MySQL数据库中导入数据的例子。

input {

  jdbc {

    jdbc_driver_library => "mysql-connector-java-5.1.36-bin.jar"

    jdbc_driver_class => "com.mysql.jdbc.Driver"

    jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb"

    jdbc_user => "mysql"

    parameters => { "favorite_artist" => "Beethoven" }

    schedule => "* * * * *"

    statement => "SELECT * from songs where artist = :favorite_artist"

  }}

 

配置SQL statement

每个input都需要一个sql statement。Sql statement可以按照字符串的形式传递给statement参数,也可以单独写到一个文件中,然后将文件路径传递给statement_filepath。当sql语句过长时,往往使用文件选项。

配置多个SQL statement

当需要从多个数据库或者多个表中查询数据时,可以配置多个sql statement。可以定义多个logstash配置文件,每个文件中配置一个SQL statement。也可以定义一个logstah配置文件,然后在一个文件中配置多个SQL statement。当在一个文件中定义多个SQL statement时,每个SQL statement要配置独立的jdbc input(包括jdbc驱动,connection string,以及其他的参数)。

注意如果多个sql statement使用到了sql_last_value,一定要为每一个sql statement配置其自己的last_run_metadata_path参数。如果不这么做,多个sql statement会修改同一个metadata文件,造成错误的运行结果。

猜你喜欢

转载自blog.csdn.net/wangqinghuan1993/article/details/84755916