Docker安装Logstash同步Mysql数据到ElasticSearch

首先

#拉取镜像,注意:Logstash,ElasticSearch,Kibana数据版本要一致
docker pull logstash:7.10.1

#启动容器
docker run --name logstash7.10.1 -d -p 5044:5044 logstash:7.10.1

#复制容器内部文件到宿主机指定目录,我这里的宿主机路径是:
# D:\ekl\logstash\config和D:\ekl\logstash\pipeline
docker cp containerid:容器内部文件路径  宿主机路径

第二,编辑配置文件

#编辑pipeline下的config
input {
  jdbc {
	#实际经验告诉我,我把jar包放在logstash的pipeline文件下会启动报错,放在logstash的config下则能启动成功,
	#当db删除某一记录时应同时删除es对应的文档记录,logstash不会自动同步db的删除
	#jar包位置
    jdbc_driver_library => "/usr/share/logstash/config/mysql-connector-java-5.1.46.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    #这里mysql地址用宿主机ip,登录mysql的账号的主机权限为%
    jdbc_connection_string => "jdbc:mysql://192.168.1.48:23306/study?useSSL=false"
    #账号和密码
    jdbc_user => "root"
	jdbc_password => "123456"
	#定时每分钟执行一次(也是logstash最快更新周期)
    schedule => "* * * * *"
    statement => "SELECT * from mq_msg"
  }
}
  
 output {
     stdout {
        codec => json_lines
    }
    elasticsearch {
    	#宿主机ip
        hosts => "192.168.1.48:9200"
        index => "mq_msg"
        document_type => "_doc"
        document_id => "%{id}"
    }
} 



#编辑config下的logstash.yml文件
http.host: "0.0.0.0"
#宿主机ip
xpack.monitoring.elasticsearch.hosts: [ "http://192.168.1.48:9200" ]

第三重启容器

#停止容器
dokcer stop containerid

#删除容器
docker rm containerid

#运行容器
# -p 指定映射端口
#-v:挂载宿主机的目录到容器内部目录,这样以后修改宿主机的配置文件重启容器就生效,方便省事
docker run 
--name logstash7.10.1 -d 
-p 5044:5044 
-v D:\ekl\logstash\config:/usr/share/logstash/config 
-v D:\ekl\logstash\pipeline:/usr/share/logstash/pipeline 
logstash:7.10.1

打印日志查看是否生效

docker logs -f containerId

Docker安装Logstash同步Mysql数据到ElasticSearch_第1张图片
logstash已成功收集到mysql的表数据了,打开kibanan查看是否同步到es

Docker安装Logstash同步Mysql数据到ElasticSearch_第2张图片
至此,ekl搭建成功

你可能感兴趣的:(EKL搭建,大数据)