一架梯子,一头程序猿,仰望星空!

Logstash jdbc input插件


jdbc插件用于解决Logstash采集数据库数据问题,基本上所有的关系数据库都支持jdbc接口,例如: MYSQL、Oracle等。

jdbc插件通过定时任务,定时的执行SQL语句,从数据库中读取数据,定时任务语法类似linux的crontab的写法。

例子

input {
  # 配置jdbc数据源
  jdbc {
    # 指定jdbc驱动路径
    jdbc_driver_library => "mysql-connector-java-5.1.36-bin.jar"
    # jdbc驱动类
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    # 数据库连接配置
    jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb"
    # 数据库账号
    jdbc_user => "mysql"
    # 数据库密码
    jdbc_password => "123456"
    # SQL绑定的参数
    parameters => { "favorite_artist" => "Beethoven" }
    # 定时任务配置
    schedule => "* * * * *"
    # SQL语句
    statement => "SELECT * from songs where artist = :favorite_artist"
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "tizi365" 
  }
}

详细的例子可以参考:同步MYSQL数据到Elasticsearch

jdbc Input插件参数

参数名类型默认值说明
jdbc_driver_librarystring指定jdbc驱动路径, 不同数据库jdbc驱动不一样
jdbc_driver_classstringjdbc驱动类,新版的MYSQL驱动类为:com.mysql.cj.jdbc.Driver
jdbc_connection_stringstring数据库连接配置, 格式: jdbc:数据库类型://地址:端口/数据库,例子:jdbc:mysql://localhost:3306/mydb
jdbc_userstring数据库账号
jdbc_passwordstring数据库密码
schedulestring定时任务配置,语法可以参考linux的cron
statementstring需要执行的SQL语句
parametershashSQL绑定参数,例子:{ "target_id" => "321" }
use_column_valuebooleanfalse当设置为true时,使用tracking_column定义的列作为:sql_last_value的值。当设置为false时,:sql_last_value等于上次执行查询的时间。
tracking_columnstring定义使用SQL查询结果中的哪一个字段值作为sql_last_value的值
jdbc_paging_enabledbooleanfalse激活分页处理
jdbc_page_sizenumber100000分页大小