一、基本介绍
1、ElestaicSearch
为开源搜索引擎,负责数据的存储及搜索
2、kibana
为开源工具,提供界面给用户进行搜索操作
3、fileBeat
为开源工具,是文件数据收集器
4、EFK工作基本原理
在部署服务的服务器节点安装fileBeat,通过路径配置使得fileBeat对指定服务日志文件的数据进行收集->收集的数据会传输到ElestaticSearch进行存储->用户通过浏览器访问kibana->然后kibana从ElestaticSearch获取数据
二、搭建过程
1、搭建
//EFK日志搜索平台搭建
下载地址:https://www.elastic.co/cn/downloads/ //进入可挑选想要下载的版本(几个工具的版本号要一致!!!!)
安装配置参考地址:
https://blog.csdn.net/cloud_xy/article/details/103228810?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_paycolumn_v3&utm_relevant_index=2
https://blog.csdn.net/javageektech/article/details/100036929
1、ElestaicSearch安装与配置
//解压
//配置
//执行
后台执行命令:
./bin/elastatic -d
后台进程取消命令:
(1)ps -ef | grep Elastic
(2)kill -15 pid
2、kibana安装与配置
//解压
//配置
//执行
准确的后台执行命令:./bin/kibana &
后台启动命令:(优先)
nohup ./bin/kibana >> logs/kibana.log 2>&1 &
后台进程取消命令:
(1)ps -ef | grep '.*node/bin/node.*src/cli' //查找kibana进程pid
(2)kill -15 ${kibana_pid} //杀死进程
3、FileBeat安装与配置
//解压
//配置
//执行
后台启动进程:
nohup ./filebeat -e -c filebeat.yml >/dev/null 2>&1 &
杀死进程:
ps -ef | grep filebeat
kill -15 pid
测试配置是否正确:
./filebeat test config -e
2、成果
//ElasticSearch
//Kibana
//FileBeat
如图所示、FileBeat已生效,将指定路径的日志内容进行采集并传输给了指定机器的ElasticSearch收集
//efk搭建运行成功
(1)filebeat运行成功后,会采集指定Log文件给Elastic,然后Elastic会传输给Kibana,此时重新访问Kibana时,页面会发生变化,提示已有数据
(2)索引创建成功
(3)日志搜索成功
三、FAQ问题集锦
1、启动kibana出现错误?
原因:glibc工具以及glibcxx工具未安装或版本过旧
解决方法:https://www.freesion.com/article/4734514761/https://tech1024.com/original/3021
效果:
2、在浏览器里访问Kibana失败?
原因:在config/kibana.yml里需要把server.host配置为0.0.0.0,才代表所有ip都能访问该机器kibana的服务;把elastic.url配置为http://localhost:9200,才能使得kibana服务连接elstaic服务。
3、遇到问题2如果还未能解决或是遇到问题“server is not ready yet”?
解决方法:
(1)先在Elasticsearch中删除kibana索引curl -XDELETE http://localhost:9200/.kibana*
(2)再重新启动kibana服务
4、启动fileBeat服务提升“Exiting: error loading config file: yaml: line 110: did not find expected key”?
原因:配置文件有语法错误,根据提示的行数进行语法修正即可
5、创建索引时,发生错误?
解决方法:
(1)先执行以下更改ES对应fileData的缓存命令
curl -H "Content-Type: application/json" -XPUT '[http://localhost:9200/\_cluster/settings](http://localhost:9200/_cluster/settings)' -d '{"persistent":{"indices.breaker.fielddata.limit":"40%"}}'
(2)重启服务
(3)重新访问kibana,创建索引成功
6、索引创建成功,但是搜索不到日志数据?
原因:搜索的时间点不对,kibana搜索框的查询时间对应的是服务器的时间即fileBeat采集日志这个动作的时间,不是日志文件内容里的时间。