【Docker】使用Fluentd将日志存储在Elasticsearch和Re:dash中进行管理
使用Docker启动Fluentd、Elasticsearch和Re:dash,进行日志收集和分析。
镀金
引入Docker和Docker Compose
如果您使用 CentOS 操作系统,可以参考以下步骤:
在 CentOS 6.5 上安装 docker 和 docker-compose。
前提 tí) – prerequisite
The above phrase can be paraphrased in Chinese as “一个前提” tí) which means “a prerequisite”.
-
- ログは行にJSON
- Fluentd & Elasticsearchは同じサーバ上に存在
以下是日志示例。
{ "type": "chatlog", "name": "hoge1", "text": "hoge1" }
{ "type": "chatlog", "name": "hoge2", "text": "hoge2" }
{ "type": "chatlog", "name": "hoge3", "text": "hoge3" }
{ "type": "chatlog", "name": "hoge4", "text": "hoge4" }
{ "type": "chatlog", "name": "hoge5", "text": "hoge5" }
Fluentd和Elasticsearch
$ mkdir ~/workspace
$ cd ~/workspace
Fluentd 流畅的日志收集和转发系统。
$ mkdir fluentd
$ cd fluentd
$ mkdir plugins
$ vi Dockerfile
$ vi fluent.conf
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
EXPOSE 24284
CMD fluentd -c /fluentd/etc/fluent.conf -p /fluentd/plugins -vv
<source>
type tail
path /var/log/hoge/[log file] # 収集するログファイル名を指定
tag json.hoge
pos_file /var/log/hoge/[log file].pos # 収集するログファイル名を指定
format json
</source>
<match json.**>
type copy
<store>
type stdout
</store>
<store>
type elasticsearch
host localhost # elasticsearchのホスト
port 9200 # elasticsearchのポート
logstash_format true
</store>
</match>
弹性搜索
$ mkdir elasticsearch
$ cd elasticsearch
$ vi Dockerfile
FROM elasticsearch
RUN bin/plugin install mobz/elasticsearch-head
EXPOSE 9200
CMD ["bin/elasticsearch", "-Des.insecure.allow.root=true"]
开始
$ cd ~/workspace
$ vi docker-compose.yml
elasticsearch:
build: elasticsearch
ports:
- 9200:9200
fluentd:
build: fluentd
ports:
- 24284:24284
volumes:
- [log folder]:/var/log/hoge # 収集するログフォルダを指定
$ docker-compose up
Elasticsearch的网页
http://[IP]:9200/_plugin/head/
关于:dash
请参考下文详细说明如何使用docker启动Re:dash。
添加数据源
设置 > 数据源 > 新的数据源
基本URL的样子是这样的
http://[IP]:9200