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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM