我踩了很多坑,看了很多很多很多不同的ELK和EFK解决方案,总结出本文档。

**镜像版本一致最好,最好是一致。。**

简单介绍下EFK

EFK不是一个软件,而是一套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用,是目前主流的一种日志系统。EFK是三个开源软件的缩写,分别表示:Elasticsearch , FileBeat, Kibana , 其中ELasticsearch负责日志保存和搜索,FileBeat负责收集日志,Kibana 负责界面,当然EFK和大名鼎鼎的ELK只有一个区别,那就是EFK把ELK的Logstash替换成了FileBeat,因为Filebeat相对于Logstash来说有2个好处:

1、侵入低,无需修改程序目前任何代码和配置
2、相对于Logstash来说性能高,Logstash对于IO占用很大

当然FileBeat也并不是完全好过Logstash,毕竟Logstash对于日志的格式化这些相对FileBeat好很多,FileBeat只是将日志从日志文件中读取出来,当然如果你日志本身是有一定格式的,FileBeat也可以格式化,但是相对于Logstash来说,还是差一点

Elasticsearch

Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

FileBeat

Filebeat隶属于Beats。目前Beats包含六种工具:
Packetbeat(搜集网络流量数据)
Metricbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
Filebeat(搜集文件数据)
Winlogbeat(搜集 Windows 事件日志数据)
Auditbeat( 轻量型审计日志采集器)
Heartbeat(轻量级服务器健康采集器)

Kibana

Kibana可以为 Logstash 、Beats和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

EFK架构图

简介链接

**镜像版本一致最好,最好是一致。。**

下载镜像

我用的是 6.5.2

docker pull  docker.elastic.co/elasticsearch/elasticsearch:6.5.2
docker pull docker.elastic.co/kibana/kibana:6.5.2
docker pull docker.elastic.co/beats/filebeat:6.5.2

创建efk网络
在同一网络中,可以用容器名称进行通信。

docker network create -d bridge efk-net

docker network ls | grep efk-net
在这里插入图片描述

		删除 网络 docker network rm efk-net
启动elasticsearch容器
docker run -itd --restart always --name=elasticsearch --network=efk-net  -p 9200:9200  -p 9300:9300 -e "discovery.type=single-node" -v /home/es:/home  docker.elastic.co/elasticsearch/elasticsearch:6.5.2
不建议你直接copy了用,搞到本地进行修改。


在浏览器用自己机器的ip:9200 也可以验证。

启动kibana
docker run -itd --name=kibana --restart always --network=elk-net -p 5601:5601 docker.elastic.co/kibana/kibana:6.5.2
浏览器验证 kibana是否跑起来了

Ip:5601

启动filebeat
docker run  --network=efk-net --restart always -e setup.kibana.host=kibana:5601 -e output.elasticsearch.hosts=["elasticsearch:9200"] --name=filebeat -itd -v /home/filebeat/logs:/mnt/log docker.elastic.co/beats/filebeat:6.5.2
	我要收集容器外的日志 -v挂了个日志文件

验证EFK是否搭建成功
查看索引



能看到机器的当前日期的索引

我这个机器没对时,不要在意这些细节。

Kibana的简单配置
为 kibana 添加匹配索引的索引模式

要想让 kibana 识别到 elasticsearch 的数据,需要把在 elasticsearch 创建好的索引告诉kibana。
Kibana使用索引模式从Elasticsearch索引中检索可视化等内容。



附上我主要参考的文章

开源精神,允许转载。
请标明出处。

2020.06.05  楠有枝 于北京·海淀
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐