docker集群ELK部署读取本地日志--(六)通过docker-compose部署ELK

1、目前日志总量不是很大,所以我只是通过docker-compose将ELK容器指定运行在一个节点,部署在了一台主机上面。可以按照需求将容器分别部署在三台主机上面、不过要注意相应的容器所需的物理卷的挂载位置也要在相对应的主机上面。

docker-compose.yml

version: "3"

services:

 elasticsearch:    #服务name

  image: docker.elastic.co/elasticsearch/elasticsearch:6.8.6    #指定elasticsearch使用的版本镜像,可根据自己的需求更改

  environment:    #elasticsearch容器启动的系统环境

    - node.name=es01

    - cluster.name=es-docker-cluster

    - discovery.type=single-node     #单节点运行

    - http.cors.enabled=true

    - http.cors.allow-origin=*

    - "ES_JAVA_OPTS=-Xms16g -Xmx16g"  #JAVA的内存大小

  ulimits: #集群运行,该配置无实际意义,可忽略

   memlock:

     soft: -1

     hard: -1  

  volumes:  #挂载相应本地存储目录存储数据,挂载配置文件

    - ./esdata/data:/usr/share/elasticsearch/data  #将本地文件存储和容器目录映射

    - ./esdata/logs:/user/share/elasticsearch/logs

    - ./esdata/plugins:/usr/share/elasticsearch/plugins

    - ./elk-config/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

  ports:  #容器与外部服务器的端口映射

    - 9200:9200

    - 9300:9300

  networks: #指定固定IP地址,但是运行后没有生效,没找到原因,暂时放弃

    esnet:

     ipv4_address: 10.0.18.3

  deploy:

    replicas: 1

    placement:

     constraints:

      - node.hostname==docker-worker02     #指定在docker-swarm的那个主机节点运行

    update_config:

      parallelism: 1

      delay: 10s

    restart_policy:

      condition: on-failure

 logstash:

  image: docker.elastic.co/logstash/logstash:6.8.6

  ports:

    - '9044:9044'

  volumes:

    - ./elk-config/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml

    - ./elk-config/logstash/config/logstash.conf:/usr/share/logstash/pipeline/logstash.conf

   - ./logdata:/usr/share/logstash/data

  networks:

    - esnet

  deploy:

    replicas: 1

    placement:

     constraints:

      - node.hostname==docker-worker02

 kibana:

  image: docker.elastic.co/kibana/kibana:6.8.6

  volumes:

    - ./elk-config/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml

  ports:

    - '5601:5601'

  networks:

    - esnet

  depends_on:  #依赖服务

    - elasticsearch

  deploy:

    replicas: 1

    placement:

     constraints:

      - node.hostname==docker-worker02

 headPlugin:

  image: 'mobz/elasticsearch-head:5'

  container_name: head

  ports:

    - '9100:9100'

  networks:

    - esnet

  deploy:

    replicas: 1

    placement:

     constraints:

      - node.hostname==docker-worker02

networks:

  esnet:

    ipam:

     config:

      - subnet: 10.0.18.0/24

 

2、运行docker-compose文件前先创建相应的的目录和配置文件

Mkdir /esdata/data    #elasticsearch的数据存储目录

Mkdir /esdata/logs    #elasticsearch的日志

Mkdir /esdata/plugins

Mkdir /logdata/dnslog  #远程sftp服务器下载的dns日志

Mkdir /elk-config        #elasticsearch logstash kibana的配置文件

因为elasticsearch产生数据、需要给相应的文件目录写入权限

Chmod 775 /esdata/data

Chmod 775 /esdata/logs

Chmod 775 /logdata

3、在docker swarm管理节点上创建docker-compose.yml文件,写入docker-compose具体的代码数据

4、运行docker-compose.yml文件、部署服务

docker stack deploy -c docker-compose.yml elk

 

5、docker stack及docker容器操作的常用基本命令

1) docker stsack deploy

用于根据 Stack 文件(通常是 docker-stack.yml)部署和更新 Stack 服务的命令。

2) docker stack ls

会列出 Swarm 集群中的全部 Stack,包括每个 Stack 拥有多少服务。

3) docker stack ps

列出某个已经部署的 Stack 相关详情。该命令支持 Stack 名称作为其主要参数,列举了服务副本在节点的分布情况,以及期望状态和当前状态。

4) docker stack rm

命令用于从 Swarm 集群中移除 Stack。移除操作执行前并不会进行二次确认。

5)docker ps

显示目前运行的容器信息,容器ID

6)docker inspect 容器ID |grep IPAddress

获取容器的IP地址

 

6、在docker-swarm管理节点使用docker stack命令运行docker-compose是将容器服务运行在整个集群上面,因为ELK有存储数据的需求,因此在docker-compos文件里面,将ELK指定在了worker02节点即(172.16.10.12)服务器上面运行,所以在172.16.10.12上面挂载硬盘。硬盘挂载配置请参考《虚拟机的配置调整》

 

 

7、查看elasticsearch的容器IP地址、并修改kibana、logstash配置文件内的elasticsearch的地址后重新加载容器服务

 

1)、查看容器ID:dockers ps

2)查看elasticsearch的容器IP地址:

docker inspect 容器ID |grep IPAddress

 

3)修改kibana.yml和logstash.conf的elasticsearch的地址为上面查询到的地址

 

4)重新加载kibana、logstash服务

8、看到各个容器正常启动,ELK部署完成。启动异常过程可以查看容器启动日志

 

 

 

9、启动完成后可以尝试浏览器访问:172.16.10.12:9200、172.16.10.12:9100 、172.16.10.12:5600

验证服务正常部署完成

 

 

参考链接:https://github.com/deviantony/docker-elk

                  https://www.cnblogs.com/wenhuazzz/p/12055747.html

                  https://blog.csdn.net/CaptainJava/article/details/106879295

                  https://www.elastic.co/guide/en/elasticsearch/reference/7.4/docker.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值