logstash 采集数据库数据

logstash 插件

/usr/share/logstash/bin/logstash-plugin  install logstash-input-jdbc
/usr/share/logstash/bin/logstash-plugin install logstash-output-elasticsearch
wget -P /usr/local/src/  https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.46.zip
unzip /usr/local/src/mysql-connector-java-5.1.46.zip  -d /usr/local/
# 下载解压

配置文件

/etc/logstash/conf.d/sql.indexer.conf

 input {
  jdbc {
    jdbc_driver_library => "/usr/local/mysql-connector-java-5.1.46/mysql-connector-java-5.1.46.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://172.16.140.xxx:3306/gatexxx"
    jdbc_user => "root"
    jdbc_password => "xxxxx"
    schedule => "* * * * *"
    statement => "SELECT * FROM browser_req_log  WHERE gmt_create  >= :sql_last_value  limit 100"
    use_column_value => true
    tracking_column_type => "timestamp"
    tracking_column => "gmt_create"
    last_run_metadata_path => "syncpoint_table"
  }
}


filter {
     mutate {
      add_field => {"temp_ts" => "%{gmt_create}"}
    }
	#添加数据库字段作为 timestamp

    # timestamp
    date {
      match => ["temp_ts","ISO8601"]
      remove_field => ["temp_ts"]
      timezone => "Asia/Shanghai"
    }

output {
  elasticsearch {
    hosts => ["172.16.140.120", "172.16.140.121", "172.16.140.122"]
    index => "browser_req-log"
    document_id => "%{id}"
  }
}

参数说明

  • jdbc_driver_library: jdbc mysql 驱动的路径,在上一步中已经下载
  • jdbc_driver_class: 驱动类的名字,mysql 填 com.mysql.jdbc.Driver 就好了
  • jdbc_connection_string: mysql 地址
  • jdbc_user: mysql 用户
  • jdbc_password: mysql 密码
  • schedule: 执行 sql 时机,类似 crontab 的调度
  • statement: 要执行的 sql,以 ":" 开头是定义的变量,可以通过 parameters 来设置变量,这里的 sql_last_value 是内置的变量,表示上一次 sql 执行中 update_time 的值,这里 update_time 条件是 >= 因为时间有可能相等,没有等号可能会漏掉一些增量
  • use_column_value: 使用递增列的值
  • tracking_column_type: 递增字段的类型,numeric 表示数值类型, timestamp 表示时间戳类型
  • tracking_column: 递增字段的名称,这里使用 update_time 这一列,这列的类型是 timestamp
  • last_run_metadata_path: 同步点文件,这个文件记录了上次的同步点,重启时会读取这个文件,这个文件可以手动修改

  • hosts: es 集群地址
  • user: es 用户名
  • password: es 密码
  • index: 导入到 es 中的 index 名,这里我直接设置成了 mysql 表的名字
  • document_id: 导入到 es 中的文档 id,这个需要设置成主键,否则同一条记录更新后在 es 中会出现两条记录,%{id} 表示引用 mysql 表中 id 字段的值

转载于:https://my.oschina.net/attacker/blog/3032888

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值