EFK企业内部日志分析系统

it2026-04-13  3

一、简单介绍

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 服务就挂了,最后纠结了半天服务也起不起来。

二、EFK 搭建

       模拟在一台虚拟机上搭建一个简单的 EFK 系统来收集 nginx 日志;

实施部署

1、 Elasticsearch部署

1)安装配置jdk8

ES运行依赖jdk8 -----三台机器都操作,先上传jdk1.8

2)安装配置ES

(1)创建运行ES的普通用户

(2)安装配置ES

(3)设置JVM堆大小

(4)创建ES数据及日志存储目录

(5)修改安装目录及存储目录权限

3)系统优化

(1)增加最大文件打开数

(2)增加最大进程数

(3)增加最大内存映射数

4)启动ES

  测试:浏览器访问 10.8.162.30:9200

2.1、安装配置head监控插件(Web前端)

1)安装node

2)下载head插件

3)安装grunt

4)修改head源码

5)下载head必要的文件

6)运行head

7)测试   10.8.162.82:9100

2.2、 Kibana部署

1)安装配置Kibana

(1)安装

(2)配置

(3)启动

(4)测试访问 10.8.162.82:5601

3、Filebeat

      下载安装  nginx ,并启动访问  nginx  。10.8.162.79  产生日志 

1)filebeat 下载

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.5.4-linux-x86_64.tar.gz

2)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 访问

     访问   10.8.162.79    产生日志

 

最新回复(0)