使用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日志驱动程序可用于转发容器日志。

bannerAds