简述

本文用于记录如何使用Docker Compose部署 EFK(Elasticsearch + Fluentd + Kibana) 收集Docker容器日志,使用EFK,可以无侵入代码,获得灵活,易用的日志收集和分析。

fluentd镜像构建相关文件、docker-compose.yml文件都放在 https://github.com/LXD24/EFK 仓库里。

1、首先弄个fluentd镜像

因为Fluentd需要fluent-plugin-elasticsearch插件才能将日志传输到Elasticsearch,所以需要根据fluentd基础镜像构建一个集成fluent-plugin-elasticsearch插件的镜像,当然也可以在网上找一个已经集成的镜像,这里懒得找就自己构建了。

按照 https://github.com/fluent/fluentd-docker-image/blob/master/README.md 上的说明创建个Dockerfile文件,看了说明需要先下载两个文件(fluent.confentrypoint.sh),github上有地址。

Dockerfile内容如下,因为我想着到时挂载fluent.conf配置文件,所以删掉了 COPY fluent.conf /fluentd/etc/ 这句复制配置文件的命令。

FROM fluent/fluentd:v1.11-1

# Use root account to use apk
USER root # below RUN includes plugin as examples elasticsearch is not required
# you may customize including plugins as you wish
RUN apk add --no-cache --update --virtual .build-deps \
sudo build-base ruby-dev \
&& sudo gem install fluent-plugin-elasticsearch \
&& sudo gem sources --clear-all \
&& apk del .build-deps \
&& rm -rf /tmp/* /var/tmp/* /usr/lib/ruby/gems/*/cache/*.gem #COPY fluent.conf /fluentd/etc/
COPY entrypoint.sh /bin/ USER fluent

然后就是docker build -t custom-fluentd:latest ./ 看着一顿下载构建镜像。

2、准备一个会输出日志的镜像

这里我随便弄了个.net core web服务,输出下访问接口的日志到控制台。

3、编写docker-compose.yml

内容如下:

version: '2'
services:
webapplication1:
image: webapplication1
container_name: webapplication1
ports:
- '8001:80'
links:
- fluentd
logging:
driver: 'fluentd'
options:
fluentd-address: localhost:24224
tag: httpd.access fluentd:
image: custom-fluentd
container_name: fluentd
volumes:
- ./fluentd/conf:/fluentd/etc
links:
- 'elasticsearch'
ports:
- '24224:24224'
- '24224:24224/udp' elasticsearch:
image: elasticsearch:6.6.2
container_name: elasticsearch
ports:
- '9200:9200'
environment:
- 'discovery.type=single-node'
- 'cluster.name=docker-cluster'
- 'bootstrap.memory_lock=true'
- 'ES_JAVA_OPTS=-Xms512m -Xmx512m'
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- ./data:/usr/share/elasticsearch/data kibana:
image: kibana:6.6.2
container_name: kibana
links:
- 'elasticsearch'
ports:
- '5601:5601'

webapplication1是我创建的web服务,需要配置日志驱动为fluentd

fluentd需要挂载fluent.conf配置文件,fluent.conf内容如下:

<source>
@type forward
port 24224
bind 0.0.0.0
</source>
<match *.**>
@type copy
<store>
@type elasticsearch
host elasticsearch
port 9200
logstash_format true
logstash_prefix fluentd
logstash_dateformat %Y%m%d
include_tag_key true
type_name access_log
tag_key @log_name
flush_interval 1s
</store>
<store>
@type stdout
</store>
</match>

4、启动

到yml文件夹目录下敲 docker-compose up 启动。



看到四个服务都是done的就可以了。

先访问下webapplication1造点日志,然后访问 http://localhost:5601 ,为Kibana设置匹配的索引名

然后就能看到收集的日志了。

最新文章

  1. (转载)Win8.1的版本
  2. Linux搭建JDK、Tomcat安装及配置
  3. #ifndef 的用法
  4. Troubleshooting FIM: (No Display Name) in FIM Portal
  5. Ubuntu / Win7 安装db2 v10.5
  6. dl dt dd定义
  7. asp.net时间 日期(DateTime) 的格式处理
  8. 有关ZxMiddleTier构想
  9. 解决ios不支持按钮:active伪类的方法
  10. angularjs中使用 &lt;input type=&quot;file&quot;&gt;标签实现一次最多上传5张图片
  11. nginx ssl 配置
  12. 【转】Lombok 安装、入门 - 消除冗长的 java 代码
  13. python使用tcp实现一个简单的下载器
  14. django----基于Form组件实现的增删改和基于ModelForm实现的增删改
  15. urllib 报错 IOError: [Errno socket error] TLS/SSL connection has been closed (EOF) (_ssl.c:590)
  16. 关于python中pika模块的问题
  17. 雷林鹏分享:C# 可空类型(Nullable)
  18. LoadRunner改脚本
  19. MAC 安装ram
  20. 解决sea_born和matplotlib画图中文显示的问题

热门文章

  1. [RH134] 8-磁盘管理
  2. 一文了解Docker容器技术的操作
  3. 手把手教你用redis实现一个简单的mq消息队列(java)
  4. 8、react 高阶组件
  5. Python--字典(三级菜单)
  6. mac 排查被占端口
  7. 【php】 jsonp转数组函数jsonp_decode
  8. Linux系统管理——Linux安装
  9. cc22a_demo_c++重载自增自减操作符-代码示范
  10. 从零开始学习Prometheus监控报警系统