Docker

Docker部署EFK(elasticsearch+fluent

2020-04-13  本文已影响0人  Rakutens
docker network create logging
启动约需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
docker run -d \
--name kibana \
--net logging \
-p 5601:5601 \
-e TZ=Asia/Shanghai \
-e ELASTICSEARCH_URL=http://elasticsearch:9200 \
kibana:7.6.2
#默认转发所有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>

官方提供的镜像不包含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 .
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参数可以帮我们过滤出想要的数据,非常有用,不建议修改

上一篇 下一篇

猜你喜欢

热点阅读