1.安装docker,pull官方镜像包
未安装docker,移步https://blog.csdn.net/qq_43499385/article/details/114671214
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.7.1
docker pull docker.elastic.co/kibana/kibana:6.7.1
docker pull docker.elastic.co/beats/filebeat:6.7.1
2.安装
2.1 ElasticSearch
- 运行镜像
docker run -d -e ES_JAVA_POTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 --name elast e2667f5db289
- 查看所有运行的镜像(包括运行失败的)
docker ps -a
- 查看运行日志
docker logs -f 自己的CONTAINER ID
- 访问http://localhost:9200/ ,出现如下信息说明ElasticSearch 启动成功

2.2 Kibana
- 启动容器
docker run --link bc712942cd55:elast -p 5601:5601 -d --name kibana 860831fbf9e7
这里启动不一样的是多了 --link 选项,作用是将两个容器关联到一起可以互相通信,因为kibana到时候需要从ElasticSearch中拿数据。当然也可以通过 --network 创建自己的局域网连接各个容器。
- 这里需要配置kibana.yml,不然kibana默认通过localhost是找不到ES的。
docker exec -it CONTAINER ID /bin/bash
CONTAINER ID 为容器CONTAINER ID
修改kibana.yml文件
vi config/kibana.yml
server.name: kibana
server.host: “0”
elasticsearch.hosts: [ “http://elasticsearch:9200” ]
monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: “zh-CN”
这里主要添加两个一个es的地址,http://xxx:9200,xxx就是刚刚link起的别名,另外就是‘i18n.locale’语言配置,kibana默认是英文界面,修改外为zh-CN就可以汉化。
修改并保存完配置文件后,先ping 一下 刚刚改的域名,如果ping成功的话,说明两个容器已经可以互相通信了。
然后通过 exit 命令 退出当前容器。
- 重启kibana容器
docker restart CONTAINER ID
- 验证
访问 http://localhost:5601/ 如果成功进入kibana界面,说明启动成功。
2.3 FileBeat
- 启动filebeat时需要先建立配置文件
拉取完成之后,先不着急启动,在启动之前需要完成先建立一份映射的配置文件filebeat.docker.yml,选择目录创建filebeat.docker.yml
需要改的地方有三处
/data/efk/logs/*.log
setup.kibana.host: “http://192.168.8.126:5601”
hosts: [“http://192.168.8.126:9200”]
filebeat.inputs:
- type: log
enabled: true
##配置你要收集的日志目录,可以配置多个目录
paths:
- /data/efk/logs/*.log
##配置多行日志合并规则,已时间为准,一个时间发生的日志为一个事件
multiline.pattern: '^\d{4}-\d{2}-\d{2}'
multiline.negate: true
multiline.match: after
#设置kibana的地址,开始filebeat的可视化
setup.kibana.host: "**http://192.168.8.126:5601**"
setup.dashboards.enabled: true
#-------------------------- Elasticsearch output ---------
output.elasticsearch:
hosts: ["**http://192.168.8.126:9200**"]
index: "filebeat-%{+yyyy.MM.dd}"
setup.template.name: "my-log"
setup.template.pattern: "my-log-*"
json.keys_under_root: false
json.overwrite_keys: true
##设置解析json格式日志的规则
processors:
- decode_json_fields:
fields: [""]
target: json
因为filebeat容器的配置文件是只读的不可更改,所以只能通过映射配置文件的方式修改。
- 2启动filebeat时需要先建立配置文件
docker run -d -v /data/efk/filebeat/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml -v /data/efk/logs/:/data/efk/logs/:ro --link bc712942cd55:elast --link 9dff24c82047:kibana --name filebeat 04fcff75b160
这里 -v 就是挂在目录的意思就是将自己本地的目录挂载到容器当中,第一个挂载映射的是配置文件,第二个是要收集的日志目录,如果不挂载日志目录的话,filebeat是不会收集日志的,因为在容器里面根本找不到要收集的路径。
- 启动后查看日志
docker logs -f 自己的CONTAINER ID
运行日志没有报错,在Kibana中可以看到日志

本文详细介绍如何使用Docker安装并配置Elasticsearch、Kibana及Filebeat,实现日志收集与展示的一体化解决方案。
717

被折叠的 条评论
为什么被折叠?



