下载logstash镜像
docker pull logstash
创建logstash目录
mkdir /usr/local/logstash
在logstash目录下建立Dockerfile文件,内容如下:
FROM logstash
CMD ["-f","/usr/local/logstash/mysql.conf"]
FROM logstash:意思是镜像构建在logstash基础之上
CMD [“-f”,”/usr/local/logstash/mysql.conf”]:代表在docker run运行镜像,容器内部启动过程中,添加参数 -f /usr/local/logstash/mysql.conf。
构建新的logstash镜像
docker build -t logstash_new
构建后查询logstash_new镜像是否构建成功
以目录挂载形式启动新的logstash镜像
docker run -d --name logstash -v /usr/local/logstash:/usr/lcoal/logstash logstash_new
把之前在window的mysql.conf和mysql驱动文件上传到宿主机的/usr/local/logstash目录下面
修改mysql.conf内容:
input { jdbc { # mysql jdbc connection string to our backup databse jdbc_connection_string => "jdbc:mysql://xxxxxx.134:3306/xxxxx?characterEncoding=UTF8" # the user we wish to excute our statement as jdbc_user => "root" jdbc_password => "123456" # the path to our downloaded jdbc driver jdbc_driver_library => "/usr/local/logstash/mysql-connector-java-5.1.46.jar" # the name of the driver class for mysql jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_paging_enabled => "true" jdbc_page_size => "50000" #以下对应着要执行的sql的绝对路径。 #statement_filepath => "" statement => "select id,title,content from tb_article" #定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新(测试结果,不同的话请留言指出) schedule => "* * * * *" } } output { elasticsearch { #ESIP地址与端口 hosts => "xxxxxx:9200" #ES索引名称(自己定义的) index => "tensquare" #自增ID编号 document_id => "%{id}" document_type => "article" } stdout { #以JSON格式输出 codec => json_lines } }
重启logstash容器
docker restart logstash
查看logstash容器日志,看是否1分钟同步一次数据到elasticsearch
docker logs -f --tail=30 logstash