使用docker-compose搭建fluentd + elasticsearch + kibana4环境
-
- いろいろ探しましたが、集約した情報がなかったのでまとめました。
docker-compose 1.3ではlog-driver設定にfluentdが対応していないようです。 → 1.8で対応したので追記しました。
安装docker和docker-compose。
-
- docker/docker-composeのインストールは公式ページを参考にインストール
-
- docker
- docker-compose
设定文件等
创建下列文件。
fluentd:
build: ./fluentd
links:
- "elasticsearch"
# Fluentd logging driver対応の場合
ports:
- "22422:22422"
# Fluentd logging driver非対応の場合
volumes:
- /var/lib/docker/containers:/var/lib/docker/containers
- /var/run:/var/run
- /var/log/docker:/var/log/docker
elasticsearch:
build: elasticsearch
expose:
- 9200
kibana:
image: kibana
links:
- "elasticsearch"
ports:
- "5601:5601"
Fluentd 流畅的
如果支持Fluentd日志驱动的情况下
因为插件目录是必需的,所以需要先创建它。
mkdir -p fluentd/plugins
安装 fluent-plugin-elasticsearch。
FROM fluent/fluentd
RUN ["gem", "install", "fluent-plugin-elasticsearch", "--no-rdoc", "--no-ri"]
<source>
type forward
port 24224
bind 0.0.0.0
</source>
<match docker.**>
type elasticsearch
log_level debug
host elasticsearch
port 9200
include_tag_key true
logstash_format true
flush_interval 5s
</match>
如果不支持Fluentd日志驱动
- dockerのコンテナ名が無いと何かと辛いのでfluent-plugin-docker-tag-resolverを使って出力しました。
FROM kiyoto/fluentd:0.10.56-2.1.1
MAINTAINER kiyoto@treausure-data.com
RUN mkdir /etc/fluent
ADD fluent.conf /etc/fluent/
RUN ["apt-get", "update"]
RUN ["apt-get", "install", "--yes", "make", "libcurl4-gnutls-dev"]
RUN ["/usr/local/bin/gem", "install", "fluent-plugin-elasticsearch", "--no-rdoc", "--no-ri"]
RUN ["/usr/local/bin/gem", "install", "fluent-plugin-record-reformer", "--no-rdoc", "--no-ri"]
RUN ["/usr/local/bin/gem", "install", "fluent-plugin-docker-tag-resolver", "--no-rdoc", "--no-ri"]
ENTRYPOINT ["/usr/local/bin/fluentd", "-c", "/etc/fluent/fluent.conf"]
<source>
type tail
path /var/lib/docker/containers/*/*-json.log
pos_file /var/log/fluentd-docker.pos
time_format %Y-%m-%dT%H:%M:%S
tag docker.log.*
format json
</source>
<match docker.log.**>
type docker_tag_resolver
</match>
<match docker.container.**>
type record_reformer
container_id ${tag_parts[4]}
container_name ${tag_parts[3]}
tag docker.all
</match>
<match docker.all>
type elasticsearch
log_level debug
host elasticsearch
port 9200
include_tag_key true
logstash_format true
flush_interval 5s
</match>
Elasticsearch 弹性搜索
默认情况下,无法从容器外部连接,因此需要设置network.bind_host。
FROM elasticsearch
RUN echo "network.bind_host: 0.0.0.0" >> /usr/share/elasticsearch/config/elasticsearch.yml
启动方式
在 docker-compose.yml 所在的目录中执行以下命令。
docker-compose up -d
请提供参考信息。
用于Docker 1.8 的Fluentd日志驱动程序可用于转发容器日志。