EFK 不是一个软件,而是一套解决方案。EFK 是三个开源软件的缩写,Elasticsearch,FileBeat,Kibana。其中 ELasticsearch 负责日志分析和存储,FileBeat 负责日志收集,Kibana 负责界面展示。它们之间互相配合使用,完美衔接,高效的满足了很多场合的应用,是目前主流的一种日志分析系统解决方案。
EFK 和 ELK 只有一个区别, 收集日志的组件由 Logstash 替换成了 FileBeat,因为 Filebeat 相对于 Logstash 来说有2个好处:
侵入低,无需修改 elasticsearch 和 kibana 的配置; 性能高,IO 占用率比 logstash 小太多;
当然 Logstash 相比于 FileBeat 也有一定的优势,比如 Logstash 对于日志的格式化处理能力,FileBeat 只是将日志从日志文件中读取出来,当然如果收集的日志本身是有一定格式的,FileBeat 也可以格式化,但是相对于Logstash 来说,效果差很多。
Elasticsearch 是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负载等。
Filebeat 隶属于 Beats。目前 Beats 包含六种工具:
Kibana可以为 Logstash 、Beats和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
另外,EFK 系统下的各个组件都非常吃内存,后期根据业务需要,EFK 的架构可进行扩展,当 FileBeat 收集的日志越来越多时,为防止数据丢失,可引入 Redis,而 ElasticSearch 也可扩展为集群,并使用 Head 插件进行管理, 所以要保证服务器有充足的运行内存和磁盘空间。
ps:曾经试图在只有 1 个 G 内存空间的阿里云服务器上搭建 一个最简易的 EFK 日志分析系统,结果是 Kibana 服务开启之后,Elasticsearch 服务就挂了,最后纠结了半天服务也起不起来。
1)安装配置jdk8
ES运行依赖jdk8 -----三台机器都操作,先上传jdk1.8
2)安装配置ES
(1)创建运行ES的普通用户
(2)安装配置ES
(3)设置JVM堆大小
(4)创建ES数据及日志存储目录
(5)修改安装目录及存储目录权限
3)系统优化
(1)增加最大文件打开数
(2)增加最大进程数
(3)增加最大内存映射数
4)启动ES
1)安装node
2)下载head插件
3)安装grunt
4)修改head源码
5)下载head必要的文件
6)运行head
7)测试 10.8.162.82:9100
1)安装配置Kibana
(1)安装
(2)配置
(3)启动
(4)测试访问 10.8.162.82:5601
1)filebeat 下载
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.5.4-linux-x86_64.tar.gz2)filebeat 解压
[root@es-3-head-kib ~]# tar xzvf filebeat-6.5.4-linux-x86_64.tar.gz -C /usr/local/ [root@es-3-head-kib ~]# cd /usr/local/ [root@es-3-head-kib local]# mv filebeat-6.5.4-linux-x86_64 filebeat [root@es-3-head-kib local]# cd filebeat/3)filebeat 修改配置
修改 Filebeat 配置,支持收集本地目录日志,并输出日志到 Kafka 集群中
[root@es-3-head-kib filebeat]# mv filebeat.yml filebeat.yml.bak [root@es-3-head-kib filebeat]# vim filebeat.yml filebeat.inputs: - type: log enabled: true paths: - /usr/local/nginx/logs/*.log setup.kibana: host: "localhost:5601" output.elasticsearch: hosts: ["localhost:9200"]4)filebeat 启动
[root@es-3-head-kib filebeat]# nohup ./filebeat -e -c filebeat.yml & [root@es-3-head-kib filebeat]# tail -f nohup.out 2019-08-04T16:55:54.708+0800 INFO kafka/log.go:53 kafka message: client/metadata found some partitions to be leaderless 2019-08-04T16:55:54.708+0800 INFO kafka/log.go:53 client/metadata retrying after 250ms... (2 attempts remaining)
5)filebeat 访问
