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,但是打包出来的镜像不仅容量大,而且目录的灵活性没有自己构建要强,故我还是建议自己来构建镜像。
一、前提条件
- 环境中已经部署了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
docker stack 部署 filebeat的更多相关文章
- docker stack 部署容器监控方案(cAdvisor、Prometheus、Grafana)
=============================================== 2018/7/8_第1次修改 ccb_warlock === ...
- docker stack 部署 mysql 5.6
=============================================== 2018/7/1_第1次修改 ccb_warlock === ...
- docker stack 部署 redis
=============================================== 2019/4/16_第2次修改 ccb_warlock 更新 ...
- docker stack 部署 seafile(http)
=============================================== 2018/5/13_第1次修改 ccb_warlock == ...
- docker stack 部署 rabbitmq 容器
=============================================== 2018/5/13_第1次修改 ccb_warlock == ...
- docker stack 部署 mssql
=============================================== 2019/12/8_第1次修改 ccb_warlock == ...
- docker stack 部署nginx
=============================================== 2018/7/29_第1次修改 ccb_warlock == ...
- Docker 的部署方式
在使用 docker run 命令启动 Docker 容器时,如果需要进行端口映射.目录挂载.网络信息等配置,整条命令将变得非常长,并且由于是一条 shell 命令,修改和复用也不方便.我们在大规模部 ...
- 容器基础(八): 使用docker swarm部署程序
环境 基于上一节的env/server:v0.1, env/worker:v0.1镜像, 在基于debian8.2的两台机器上测试部署docker swarm. docker service部署 ➜ ...
随机推荐
- 【Learning】积性函数前缀和——洲阁筛(min_25写法)
问题描述 洲阁筛解决的问题主要是\(n\)范围较大的积性函数前缀和. 已知一积性函数\(f(i)\),求\(\sum_{i=1}^nf(i)\). \(n\leq10^{12}\). 求解方法 如 ...
- 20165218 《网络对抗技术》 Exp5 MSF基础应用
Exp5 MSF基础应用 实践内容 主动攻击:ms08_067 exploit/windows/smb/ms08_067_netapi generic/shell_reverse_tcp 针对浏览器攻 ...
- phpredis pipeline
通过pipeline方式将client端命令一起发出,redis server会处理完多条命令后,将结果一起打包返回client,从而节省大量的网络延迟开销.
- 在VC6/VC2005下使程序直接具有XP风格(XP Style):
原文 首先将以下文本保存为XpStyle.mainfest(后经实践,文件名和后缀是什么都无所谓) <?xml version="1.0" encoding="UT ...
- python 生成器和迭代器介绍
在正式接触生成器之前,我们先来了解一些概念 容器(container) 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个迭代获取,可以用in.not in关键字判断元素是否包含在容器中. ...
- http协议POST请求头content-type主要的四种取值
介绍: 在此之前对content-type理解很肤浅,因此必须记录下来现在的理解,以便回顾 Content-Type,从名字上可以理解为内容类型,但在互联网上专业术语叫“媒体类型”,即MediaTyp ...
- [整理]Node入门 » 一本全面的Node.js教程 - Demo实践所遇到的问题
花了一个上午看完[转载]Node入门 » 一本全面的Node.js教程 根据里面的Demo自己手动实现过程中还是遇到了些问题,特整理在此. <1>.由于node.msi安装包已经自动添加了 ...
- Ubuntu下hadoop环境的搭建(伪分布模式)
Ubuntu下hadoop环境的搭建(伪分布模式) 一.必要资源的下载 1.Java jdk(jdk-8u25-linux-x64.tar.gz)的下载 具体链接为: http://www.oracl ...
- HDU 1069 Monkey and Banana(最长递减子序列)
题目链接 题意:摞长方体,给定长方体的长宽高,个数无限制,可随意翻转,要求下面的长方体的长和宽都大于上面的,都不能相等,问最多能摞多高. 题解:个数无限,其实每种形态最多就用一次,把每种形态都单独算一 ...
- 配置SpringBoot-从日志系统配置说起
大小系统都需要打日志. 系统在不同环境下对日志的配置要求是不一样的 比如 开发本地: 直接输出到控制台 生产环境: 输出到文件或者额外的日志收集系统, 比如 graylog. (本文不探讨具体日志系统 ...