Elasticsearch+Fluentd+Kibana整合全流程
一、Docker安装Elasticsearch
1.1 创建一个网络名为log且driver为bridge的网络
docker network create log
1.2 创建单节点的Elasticsearch
docker run -d --name elasticsearch --net log -p 9200:9200 -p 9300:9300 -e TZ=Asia/Shanghai -e "discovery.type=single-node" elasticsearch:7.8.1
二、Docker安装Kibana
2.1 安装Kibana
docker run -d --name kibana --net log -p 5601:5601 -e TZ=Asia/Shanghai -e ELASTICSEARCH_URL=http://elasticsearch:9200 kibana:7.8.1
三、Docker安装Fluentd
3.1 创建含有fluent-plugin-elasticsearch的Dockerfile
FROM fluent/fluentd
RUN ["gem", "install", "fluent-plugin-elasticsearch", "--no-rdoc", "--no-ri"]
# docker build -t docker-fluentd .
3.2 创建td-agent client的td-agent.conf
<source>
#采用in-tail的插件,相当于tail -F
@type tail
#指定input的文件路径多个文件以,分隔
path /logs/gpos/order/%Y-%m-%d/*,/logs/gpos/action/%Y-%m-%d/*
#保存上次读取到的记录位置
pos_path /logs/lastRecord/logs
#从文件头开始读
read_from_head true
#指定tag名称
tag log.gpos
<parse>
# 多行解析插件
@type multiline
# 指定开始解析的格式
format_firstline /\d{4}-\d{1,2}-\d{1,2}/
# 格式为 2020-01-01 00:00:00 [thread1] INFO pos_xxx - {}
format1 /^(?<log_time>\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}) (?<thread>[^\s]+) (?<level>[^\s]+) (?<type>[^\s]+) - (?<message>[\s\S]*)/
</parse>
</source>
#匹配多个tag可使用通配符匹配**.*
<match log.gpos>
# output的类型为转发
@type forward
# server的ip与port
<server>
host xxx.xxx.xxx.xxx
port 24224
</server>
</match>
3.3 创建td-agent server的td-agent.conf
<source>
@type forward
port 24224
</source>
# 匹配所有
<match *.**>
# 存储类型为es
@type elasticsearch
host elasticsearch
port 9200
index_name ${tag}
type_name ${tag}
logstash_format true
#index的前缀,不指定默认为logstash-
logstash_prefix ${tag}
include_tag_key true
tag_key @log_name
<format>
@type json
</format>
# 刷新缓存的时间,fluentd默认缓存到内存中,也可以指定缓存的文件路径 path /path/to/dir
<buffer>
flush_interval 10s
</buffer>
</match>
3.4 启动td-agent client
docker run -d --name fluentd --net log -p 24224:24224 -p 24224:24224/udp -e TZ=Asia/Shanghai -e FLUENTD_CONF=docker-fluentd.conf -v /logs/gpos:/logs/gpos -v /etc/td-agent/td-agent.conf:/fluentd/etc/docker-fluentd.conf docker-fluentd
3.5 启动td-agent server
docker run -d --name fluentd --net log -p 24224:24224 -p 24224:24224/udp -e TZ=Asia/Shanghai -e FLUENTD_CONF=docker-fluentd.conf -v /etc/td-agent/td-agent.conf:/fluentd/etc/docker-fluentd.conf docker-fluentd
#非docker方式启动 systemctl start td-agent