-
前言
EFK作为ELF的替代方案,是目前比较火的日志分析平台套件,网上很多教程都旧了并且写的含混不清,所以决定自己写一遍,希望能为大家带来帮助。 -
创建专用网络
docker network create logging
- 运行Elasticsearch(用于收集保存log)
启动约需2分钟,需耐心等待
docker run -d \
--name elasticsearch \
--net logging \
-p 9200:9200 \
-p 9300:9300 \
-e TZ=Asia/Shanghai \
-e "discovery.type=single-node" \
elasticsearch:7.6.2
- 运行Kibana(用于分析显示log)
docker run -d \
--name kibana \
--net logging \
-p 5601:5601 \
-e TZ=Asia/Shanghai \
-e ELASTICSEARCH_URL=http://elasticsearch:9200 \
kibana:7.6.2
- 自定义Fluentd配置文件docker-fluentd.conf
#默认转发所有9200端口数据
<source>
@type forward
</source>
#多开个端口以后给syslog用
<source>
@type syslog
port 8888
tag rsyslog
</source>
#将匹配规则的数据存到elasticsearch(其实就是所有数据都存)
<match **>
@type elasticsearch
host elasticsearch #你的elasticsearch地址或docker实例名
port 9200
flush_interval 10s
logstash_format true #设置以后index为logstash-日期,代替index_name的值,并且索引添加@timestamp字段记录日志读取时间
logstash_prefix ${tag} #设置以后索引会以tag名称-日期进行命名
index_name ${tag}-%Y.%m.%d
type_name ${tag}-%Y.%m.%d
include_tag_key true #把tag当做字段写入ES
tag_key @log_name
<buffer tag, time> #让index_name ${tag}-%Y.%m.%d 时间格式生效
timekey 1h
</buffer>
</match>
- 生成一个带插件的Fluendtd镜像
官方提供的镜像不包含elasticsearch插件,所以我们得自己生成一个
#编辑Dockerfile
FROM fluentd
USER root
RUN gem install fluent-plugin-elasticsearch \
fluent-plugin-tail-ex \
fluent-plugin-tail-multiline
USER fluent
#多留个端口出来供以后转发用
EXPOSE 24224 24224/udp 8888
#docker build
docker build -t my-fluentd .
- 运行Fluentd(抓取log)
docker run -d \
--name fluentd \
--net logging \
-p 24224:24224 \
-p 24224:24224/udp \
-p 8888:8888 \
-e TZ=Asia/Shanghai \
-e FLUENTD_CONF=docker-fluentd.conf \
-v /path/to/dir/docker-fluentd.conf:/fluentd/etc/docker-fluentd.conf \
-v /path/to/dir:/fluentd/log \
fluentd
- 为所有运行的镜像添加参数
如不在同一网段中,请将fluentd:24224改为指定ip
--log-driver=fluentd \
--log-opt fluentd-address=fluentd:24224 \
--log-opt tag="{{.ImageName}}/{{.Name}}/{{.ID}}" \
例如:
docker run -d
-e TZ=Asia/Shanghai \
--log-driver=fluentd \
--log-opt fluentd-address=fluentd:24224 \
--log-opt tag="{{.ImageName}}/{{.ID}}" \
-p 80:80 \
-p 443:443 \
nginx
tag参数可以帮我们过滤出想要的数据,非常有用,不建议修改
-
完工
通过浏览器访问Kibana的地址,即可进入日志平台,配置过索引后即可查看到的nginx的日志
Kibana访问地址:http://host-ip:5601 -
参考:
Install Elasticsearch with Docker
Docker 容器中运行 Kibana
Customize log driver output
Plugin For Elasticsearch
通过fluentd转存nginx日志
Istio日志采集EFK
fluentd代替logstash搭建EFK日志管理系统
网友评论