===============================================
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,但是打包出來的鏡像不僅容量大,而且目錄的靈活性沒有自己構建要強,故我還是建議自己來構建鏡像。
一、前提條件
- 環境中已經部署了docker swarm(http://www.cnblogs.com/straycats/p/8978135.html)
- 最好也部署了portainer(http://www.cnblogs.com/straycats/p/8978201.html)
- 本次例子演示的filebeat如何抓取kong的日志發送給logstash
- 本次試驗用的logstash部署的IP為192.168.12.12:5044
二、生成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