【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