docker部署logstash实现mysql数据同步至elasticsearch

elk是最佳组合,通过测试logstash同步数据的性能还是很靠谱的

以下是部署步骤记录,可实现增量或者全量,只需要改一下lastValue的值即可

目录

1.拉取loastash镜像

2、创建logstash目录,并创建一下目录及文件,如下

3、创建Dockerfile,内容如下:

4、jar下方的是mysql 驱动jar

5、创建lastValue目录来存放上次执行的记录值,并创建本次任务记录文件如下:(可以不创建,每个批次后会自动写入)

6、创建pipeline目录并创建,本次任务的配置文件,logstash.conf

7、打包镜像

8、启动服务

后续相关命令:


1.拉取loastash镜像

docker pull logstash

当前版本应该是7.10.1

 

2、创建logstash目录,并创建一下目录及文件,如下

[root@test-zjzb-1: /opt/logstash]# ll

total 16

-rw-r--r-- 1 root root  267 Dec 30 16:08 Dockerfile

drwxr-xr-x 2 root root 4096 Dec 30 16:08 jar

drwxr-xr-x 2 root root 4096 Dec 30 16:33 lastValue

drwxr-xr-x 2 root root 4096 Dec 30 16:34 pipeline

3、创建Dockerfile,内容如下:

[root@test-zjzb-1: /opt/logstash]# ll

total 16

-rw-r--r-- 1 root root  267 Dec 30 16:08 Dockerfile

drwxr-xr-x 2 root root 4096 Dec 30 16:08 jar

drwxr-xr-x 2 root root 4096 Dec 30 16:33 lastValue

drwxr-xr-x 2 root root 4096 Dec 30 16:34 pipeline

4、jar下方的是mysql 驱动jar

[root@test-zjzb-1: /opt/logstash]# cd jar

[root@test-zjzb-1: /opt/logstash/jar]# ls

mysql-connector-java-8.0.21.jar

[root@test-zjzb-1: /opt/logstash/jar]#

 

5、创建lastValue目录来存放上次执行的记录值,并创建本次任务记录文件如下:(可以不创建,每个批次后会自动写入)

[root@test-zjzb-1: /opt/logstash/lastValue]# ls

lastId-es

[root@test-zjzb-1: /opt/logstash/lastValue]#



内容如下:

[root@test-zjzb-1: /opt/logstash/lastValue]# cat lastId-es

--- 20762979

 

注:--- 20762979

是固定格式,---空格加上次的值

 

6、创建pipeline目录并创建,本次任务的配置文件,logstash.conf

内容如下:

[root@test-zjzb-1: /opt/logstash/lastValue]# cd ../pipeline/

[root@test-zjzb-1: /opt/logstash/pipeline]# ls

logstash.conf

[root@test-zjzb-1: /opt/logstash/pipeline]# cat logstash.conf

input {

    stdin {

    }

    jdbc {

      jdbc_connection_string => "jdbc:mysql://10.**.**.**:3306/bigdatatest"

      jdbc_user => "root"

      jdbc_password => "123****1q"

      jdbc_driver_library => "/app/mysql-connector-java-8.0.21.jar"

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

      jdbc_paging_enabled => "true"

      jdbc_page_size => "30000"

      use_column_value => "true"

      tracking_column => "id"

      statement => "select * from dt_tt_haier_total_order where id > :sql_last_value"

      schedule => "* * * * *"

      last_run_metadata_path => "/usr/share/logstash/pipeline/lastVule/lastId-es"

    }

}





filter {

    json {

        source => "message"

        remove_field => ["message"]

    }

}





output {

    elasticsearch {

        hosts => ["10.***.***.***:9200"]

        index => "test-logstash-index-tank"

        document_id => "%{id}"

    }

    stdout {

        codec => json_lines

    }

}

 

注释:

jdbc_page_size 每批次分页,默认30万,这里增量改成了3万

tracking_column指定增量试用的标志字段

statement 执行语句

schedule 周期,以上配置默认一分钟一批次

last_run_metadata_path 增量时上次值储存位置

 

 

output 配置输出信息,此处为es配置

input 配置输入信息,此处为mysql

jdbc_driver_library 是mysql需要的驱动jar,此处咱们下载后挂在上

 

7、打包镜像

docker build -t uo-bd-logstash .

 

8、启动服务

docker run -it --name uo-bd-logstash \

-v /opt/logstash/lastValue:/usr/share/logstash/pipeline/lastVule/ \

-p 20726:5044 -p 20725:9600 \

-d uo-bd-logstash

 

后续相关命令:

查看日志 docker logs -f uo-bd-logstash

停止服务 docker stop uo-bd-logstash

删除容器docker rm uo-bd-logstash

删除镜像docker rmi uo-bd-logstash

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值