docker部署logstash实现mysql数据同步至elasticsearch
elk是最佳组合,通过测试logstash同步数据的性能还是很靠谱的以下是部署步骤记录,可实现增量或者全量,只需要改一下lastValue的值即可1.拉取loastash镜像docker pull logstash当前版本应该是7.10.12、创建logstash目录,并创建一下目录及文件,如下[root@test-zjzb-1: /opt/logstash]# lltotal 16-rw-r--
elk是最佳组合,通过测试logstash同步数据的性能还是很靠谱的
以下是部署步骤记录,可实现增量或者全量,只需要改一下lastValue的值即可
目录
5、创建lastValue目录来存放上次执行的记录值,并创建本次任务记录文件如下:(可以不创建,每个批次后会自动写入)
6、创建pipeline目录并创建,本次任务的配置文件,logstash.conf
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)