zoukankan      html  css  js  c++  java
  • docker stack 部署 filebeat

    ===============================================

     2018/7/21_第3次修改                       ccb_warlock

      

     更新说明:

     2018/7/21:增加官方镜像库的文字描述;

     2018/6/26:调整filebeat的底层镜像位ubuntu;

                       更新filebeat的版本到6.3.0;

                       增加底层不使用alpine的理由描述;

    ===============================================

     filebeat作为轻量化的日志传输工具非常适合部署在服务端将日志传输回来后经过ELK进行分析统计,故本篇整理stack中部署redis容器服务的方式。

     

     PS.官方目前也提供了镜像库(https://www.docker.elastic.co/),虽然官方说明底层是用centos,但是打包出来的镜像不仅容量大,而且目录的灵活性没有自己构建要强,故我还是建议自己来构建镜像。

     


     一、前提条件

     


     二、生成filebeat镜像

     由于我部署的时候没有找到官方的filebeat镜像,故只能先自己构建镜像包。

     2.1 获取filebeat包

     # 创建目录

    mkdir -p /root/filebeat

     接着从官网(https://www.elastic.co/cn/downloads/beats/filebeat)获取tar.gz包(当时最新的包为filebeat-6.3.0-linux-x86_64.tar.gz),并将tar.gz包上传到/root/filebeat目录下。

     

     2.2 创建dockerfile、docker-entrypoint.sh

     # 编辑dockerfile 

    vi /root/filebeat/dockerfile

     # 增加下面的内容到dockerfile文件中,wq保存。

    # base image
    FROM  ubuntu:18.04
    
    # Install Filebeat
    WORKDIR /usr/local
    COPY filebeat-6.3.0-linux-x86_64.tar.gz /usr/local
    RUN cd /usr/local &&     tar xvf filebeat-6.3.0-linux-x86_64.tar.gz &&     rm -f filebeat-6.3.0-linux-x86_64.tar.gz &&     ln -s /usr/local/filebeat-6.3.0-linux-x86_64 /usr/local/filebeat &&     chmod +x /usr/local/filebeat/filebeat &&     mkdir -p /etc/filebeat &&     mkdir -p /var/log/filebeat-target
    ADD ./docker-entrypoint.sh /usr/bin/ RUN chmod +x /usr/bin/docker-entrypoint.sh ENTRYPOINT ["docker-entrypoint.sh"] CMD ["/usr/local/filebeat/filebeat","-e","-c","/etc/filebeat/filebeat.yml"]

     PS.这里选择ubuntu的原因是其作为底层打包出来的镜像比centos要小很多。

           我曾经尝试使用alpine:3.7作为底层,但是构建后的镜像运行时报“standard_init_linux.go:190: exec user process caused "no such file or directory"”,故最后还是选择ubuntu。

     # 编辑docker-entrypoint.sh

    vi /root/filebeat/docker-entrypoint.sh

     # 增加下面的内容到docker-entrypoint.sh文件内,wq保存。

    #!/bin/bash
    set -e 
    TMP=${PATHS}
    config=/etc/filebeat/filebeat.yml
    if [ ${TMP:0:1} = '/' ] ;then
        tmp='"'${PATHS}'"'
    fi
    
    env
    echo 'Filebeat init process done. Ready for start up.'
    echo "Using the following configuration:"
    cat /etc/filebeat/filebeat.yml
    exec "$@"

     2.3 构建filebeat容器

    cd /root/filebeat/
    docker build --rm -t filebeat:6.3.0 .

     三、部署filebeat

     3.1 创建映射的本地目录

    mkdir -p /usr/docker-vol/filebeat/conf

     3.2 添加配置文件filebeat.yml

    vi /usr/docker-vol/filebeat/conf/filebeat.yml

     # 添加下面的内容到filebeat.yml文件中,wq保存。

    filebeat.prospectors:
    - type: log
      paths:
        - /var/log/filebeat-target/access.log
    
    output.logstash:
      # ELK - Logstash hosts
      hosts: ["192.168.12.12:5044"]

     3.3 配置filebeat-stack.yml

    cd
    vi filebeat-stack.yml

     # 添加下面的内容到filebeat-stack.yml文件内 ,wq保存。

    version: '3'
    services:
    
      filebeat:
        image: filebeat:6.3.0
        environment:
          - TZ=Asia/Shanghai
        volumes:
          # filebeat 的配置文件
          - /usr/docker-vol/filebeat/conf/filebeat.yml:/etc/filebeat/filebeat.yml
          # 将kongy获取的日志映射到filebeat-target目录下
          - /usr/docker-vol/kong/kongy-log:/var/log/filebeat-target
        deploy:
          replicas: 1
          restart_policy:
            condition: on-failure
        networks:
          - net01
    
    networks:
      net01:
        external: true

     3.4 创建服务栈

     1)命令方式

    cd
    docker stack deploy -c filebeat-stack.yml filebeat-stack

     2)portainer界面方式(推荐)

     登录portainer(如果是根据上面的教程部署的portainer,浏览器访问http://宿主机IP:9000,在stack中增加rabbitmq-stack.yml文件中的内容)

     


     参考资料:
     1.http://blog.51cto.com/ylw6006/2107307?app
     2.http://blog.51cto.com/linyingyong/2083825

  • 相关阅读:
    Ubuntu创建VLAN接口配置
    Ubuntu配置网桥方法
    Ubuntu重启网卡的三种方法
    kvm存储池和存储卷
    ubuntu如何切换到root用户
    修改Ubuntu默认apt下载源
    Java之泛型<T> T与T的用法(转载)
    Java关键字(一)——instanceof(转载)-BeanCopier相关
    java代码之美(12)---CollectionUtils工具类(转载)
    Lombok-注解@Slf4j的使用
  • 原文地址:https://www.cnblogs.com/straycats/p/9153495.html
Copyright © 2011-2022 走看看