【Docker】构建Fluentd、Elasticsearch和Kibana的环境

因为Fluentd、Elasticsearch和Kibana的组合很受欢迎,所以我在docker环境中尝试创建了一个。

假设

    • ログは行にJSON

 

    FluentdとElasticsearchとKibanaは同じサーバ上に存在

構成 – 组成

.
├── docker-compose.yml
├── elasticsearch
│   └── Dockerfile
├── fluentd
│   ├── Dockerfile
│   ├── fluent.conf
│   └── plugins
└── log
    └── hoge_log # 収集するログ

Docker 是什么

elasticsearch:
  build: elasticsearch
  ports:
    - 9200:9200
fluentd:
  build: fluentd
  ports:
    - 24284:24284
  volumes:
    - ./log:/var/log/hoge
  links:
    - elasticsearch
kibana:
  image: kibana
  ports:
    - 9204:5601
  environment:
      - ELASTICSEARCH_URL=http://elasticsearch:9200
  links:
      - elasticsearch

流畅的日志(ID: Fluentd)

FROM fluent/fluentd:latest-onbuild

USER fluent

WORKDIR /home/fluent
ENV PATH /home/fluent/.gem/ruby/2.3.0/bin:$PATH
RUN gem install fluent-plugin-secure-forward # セキリュティ対策
RUN gem install fluent-plugin-elasticsearch # Elasticsearch連携

EXPOSE 24284

CMD fluentd -c /fluentd/etc/fluent.conf -p /fluentd/plugins -vv
<source>
  type tail
  path /var/log/hoge/hoge_log
  tag json.hoge
  pos_file /var/log/hoge/hoge_log.pos
  format json
</source>

<match json.**>
  type copy

  <store>
    type elasticsearch
    host elasticsearch
    port 9200
    logstash_format true
  </store>

  <store>
    type stdout
  </store>
</match>

弹性搜索

FROM elasticsearch

RUN bin/plugin install mobz/elasticsearch-head

EXPOSE 9200

CMD  ["bin/elasticsearch", "-Des.insecure.allow.root=true"] # root=trueが無いと初回起動で失敗する

开始

$ docker-compose up --build

Elasticsearch 页面

http://[IP]:9200/_plugin/head/

Kibana 页面 (Kibana Page)

http://[IP]:9204/

就像这样,试着添加一条日志进行尝试。

$ echo "{ hoge :"hoge" }" >> log/hoge_log

只要Elasticsearch中有日志记录就可以了。

GitHub的中文释义是基于Git的版本控制仓库。

我已在以下链接中公开了本次项目:
https://github.com/naruminn/fluentd-elasticsearch-kibana

广告
将在 10 秒后关闭
bannerAds