由于在国内拉去镜像速度都比较慢,或者根本拉不下来,发现一个好的镜像好用镜像网址,可以在上面查找自己想要的镜像

进入正题,配置我们环境,有以下几个步骤:

一、搭建elasticsearch的环境

  •  从镜像仓库拉去elasticsearch,选择自己想要版本 
docker pull daocloud.io/library/elasticsearch:6.5.3
  •  启动elasticsearch镜像
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" daocloud.io/library/elasticsearch:6.5.3

       若主机内存比较小,es是启动不成功的,elasticsearch/jvm.options 默认配置 -Xms2g - Xmx2g 来指定内存,然后更改启动语句

docker run -d --name es -p 9200:9200 -p 9300:9300 -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -e "discovery.type=single-node" daocloud.io/library/elasticsearch:6.5.3
  • 查看es是否能安装成功,可通过postman工具查看,访问127.0.0.1:9200

        

logstach docker 安装部署 docker部署logstash_运维

二、搭建mysql环境

  •  从镜像仓库拉去mysql,选择自己想要版本 
docker pull daocloud.io/library/mysql:5.7.4
  •  启动mysql镜像,"MYSQL_ROOT_PASSWORD"这个属性设置root的密码,自行更改
$ docker run --name mysql -e MYSQL_ROOT_PASSWORD="root" -d daocloud.io/mysql:5.7.4
  • 打开root访问权限,不然无法访问mysql
#利用该语句进入mysql容器
docker exec -it mysql bash

#然后连接mysql
mysql -uroot -proot

#然后执行root权限的开放语句
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

然后利用mysq连接工具访问ok,就说明配置成功

三、搭建logstash环境

  • 拉去logstash镜像,注意一定要es的版本一致
docker pull daocloud.io/library/logstash:6.5.3

 

  • 启动logstash镜像,同时映射文件夹,这样就可以把文件同步到镜像内

    将/Users/work/docker/logstash/文件映射到容器的/etc/logstash/pipeline/目录下

docker run -d --name logstash1 -v /Users/work/docker/logstash/:/etc/logstash/pipeline/  daocloud.io/library/logstash:6.5.3
  •  安装 jdbc 和 elasticsearch 插件

        通过 docker exec -it logstash1 /bin/bash 命令进入容器内,然后在下载插件   

/opt/logstash-6.5.4# bin/logstash-plugin install logstash-input-jdbc
Validating logstash-input-jdbc
Installing logstash-input-jdbc
Installation successful
/opt/logstash-6.5.4# bin/logstash-plugin install logstash-output-elasticsearch
Validating logstash-output-elasticsearch
Installing logstash-output-elasticsearch
Installation successful
  • 下载mysql-connector-java的jar包,放在刚刚配置的映射/Users/work/docker/logstash/文件夹中
  • 编写logstash的配置文件logstash.config,也放在刚刚配置的映射/Users/work/docker/logstash/文件夹中,具体配置项的含义查看官方文档
input {
 stdin { }
    jdbc {
        #注意mysql连接地址一定要用ip,不能使用localhost等
        jdbc_connection_string => "jdbc:mysql://192.168.1.103:3307/test"
        jdbc_user => "root"
        jdbc_password => "123456"
        #这个jar包的地址是容器内的地址
        jdbc_driver_library => "/etc/logstash/pipeline/mysql-connector-java-5.1.47.jar"
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        jdbc_paging_enabled => "true"
        jdbc_page_size => "50000"
        statement => "SELECT * FROM test"
        schedule => "* * * * *"
    }
 }
  
 output {
     stdout {
        codec => json_lines
    }
    elasticsearch {
        #注意mysql连接地址一定要用ip,不能使用localhost等
        hosts => "192.168.1.103:9200"
        index => "test"
        document_type => "_doc"
        document_id => "%{id}"
    }
}
  • 更改设置,不然后连接es会报错,记得更改配置都在容器内操作;
#进入config文件
cd config

#更改logstash.yml文件
vi logstash.yml

     改成es的地址,但不能用127.0.0.1或localhost

logstach docker 安装部署 docker部署logstash_大数据_02

  • 更改logstash启动配置
#进入config文件
cd config

#更改pipelines.yml文件
vi pipelines.yml

    具体修改为,注意这个是容器内的地址配置文件的地址路径

- pipeline.id: table1
  path.config: "/etc/logstash/pipeline/logstash.conf"

    若想配置多个同步文件同样的道理

   

logstach docker 安装部署 docker部署logstash_大数据_03

  • 然后推出容器,重启logstash即可
docker start logstash1


#具体的日志查看方式
docker logs -f --tail=30 logstash1

致此,所有配置都完成,我们查看一下是否同步成功

logstach docker 安装部署 docker部署logstash_大数据_04