0 说明

本次EFK分布式日志收集系统节点安排如下:

主机名

主机ip

部署情况

chen-1

192.168.218.100

Elasticsearsh Logstash Filebeat Namenode ResourceManager ZK

chen-2

192.168.218.101

Elasticsearsh SecondaryNamenode Datanode Nodemanager ZK

chen-3

192.168.218.102

Elasticsearsh Datanode Nodemanager ZK

chen-4

192.168.218.103

Kibana Datanode Nodemanager

chen-5

192.168.218.104

Datanode Nodemanager

Filebeat和Logstash都具有日志采集功能,不同的是Filebeat是轻量级的,Logstash运行在JVM上,但其功能更强大。本文采用Filebeat+Logstash方式采集日志。

EFK各组件之间对版本比较敏感,在安装部署时,一定要保证版本一直,至少保证大版本一致。本文采用的版本是6.6.2的版本

1 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来说,还是差一点。

2 组件介绍

2.1 Elasticsearch

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

2.2 FileBeat

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

2.3 Kibana

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

3 EFK架构图

elk结合kafka elk与kafka_elk结合kafka

4 安装部署EFK

1)安装JDK,必须是jdk8以上的版本,因为elastisearch6.6.2要求jdk8以上。

2)安装ES

集群:192.168.218.100/101/102

官网下载地址:https://www.elastic.co/cn/downloads/

解压文件,并进入配置目录

打开config目录下的elasticsearch.yml文件

elk结合kafka elk与kafka_elk结合kafka_02


elk结合kafka elk与kafka_大数据_03


注意ES不能用root账户启动,新建账户useradd chen-es

并设置密码,passwd chen-es 设置完成后用root账户给chen-es授权,让其可以访问到ES的相关目录。chown –R chen-es:chen-es /root/apps/elastisearch-6.6.2

切换到chen-es用户,启动ES

./bin/elasticsearch –d –d表示静默模式启动

此时访问页面192.168.218.100:9200可看到下面页面,这表示ES安装成功。

elk结合kafka elk与kafka_分布式_04


将elasticsearch-6.6.2拷贝到需要部署ES的其他机器上,修改配置文件,配置文件只需修改节点名称、ip地址

elk结合kafka elk与kafka_分布式_05

elk结合kafka elk与kafka_elasticsearch_06


3)安装Kibana

服务器:192.168.218.103

官网:https://www.elastic.co/cn/downloads/kibana 下载对应的版本,注意EFK的版本要一致,我采用的6.6.2版本的EFK

下载并解压进入config目录,打开kibana.yml配置文件

elk结合kafka elk与kafka_分布式_07


添加以下配置,或者注释掉

# 本节点访问端口
server.port: 5601 
# 本节点IP
server.host: "192.168.218.103" 
# 本节点名字
server.name: "chen-4" 
# elasticsearch集群IP
elasticsearch.hosts: ["http://192.168.218.100:9200",
                      "http://192.168.218.101:9200",
                      "http://192.168.218.102:9200"]

其中elasticsearch.hosts为Elasticsearch集群的地址,server.host默认是localhost,如果只是本地访问可以默认localhost,如果需要外网访问,可以设置为0.0.0.0

elk结合kafka elk与kafka_elasticsearch_08


启动Kibana

elk结合kafka elk与kafka_elk结合kafka_09


看到如下监听端口则表示,kibana安装成功

elk结合kafka elk与kafka_大数据_10


访问页面192.168.218.103:5601,可看到如下页面

选择使用简单例子添加

elk结合kafka elk与kafka_分布式_11


点击查看创建的视图

elk结合kafka elk与kafka_大数据_12


可以根据国家和windows版本的不同选择,看到不同的视图

elk结合kafka elk与kafka_elk结合kafka_13


查看ES索引

elk结合kafka elk与kafka_分布式_14


elk结合kafka elk与kafka_elasticsearch_15


可以使用开发工具进行一些相关查询

elk结合kafka elk与kafka_linux_16


4)安装Filebeat

安装服务器:192.168.218.100

https://www.elastic.co/cn/downloads/beats/filebeat 下载并解压

进入主目录,修改配置

elk结合kafka elk与kafka_大数据_17


打开filebeat.yml配置文件,并进行相应的参数修改

filebeat.inputs:
- type: log
  enabled: true
  backoff: "1s"
  tail_files: false
  paths:
    - /usr/local/nginx/logs/access.log
  
output.console:
  enabled: true

配置一定要注意格式,是以2个空格为子级,里面的配置都在配置文件中,列出来的只是要修改的部分,enabled默认为false,需要改成true才会收集日志。其中/var/xxx/*.log修改为自己的日志路径,注意-后面有一个空格,
如果多个路径则添加一行,一定要注意新行前面的4个空格,multiline开头的几个配置取消注释就行了,是为了兼容多行日志的情况,setup.kibana中的host取消注释,根据实际情况配置地址,output.elasticsearch中的host也一样,根据实际情况配置

backoff:设定多长时间检查文件更新。

tail_files:如果设置为true,则Filebeat将在每个文件的末尾而不是开头读取新文件。

当此选项与日志轮换结合使用时,可能会跳过新文件中的第一个日志条目。

output.console表示把输出内容打印到面板上

elk结合kafka elk与kafka_linux_18


elk结合kafka elk与kafka_linux_19


启动filebeat:

./filebeat -e -c filebeat.yml

可以发现filebeat已经将日志中的内容读取了出来,

elk结合kafka elk与kafka_大数据_20


此时我们在浏览器中任意访问一个网页增加access.log的日志内容,查看其是否是实时更新。

elk结合kafka elk与kafka_elasticsearch_21


可以看到数据被filebeat实时采集到了

elk结合kafka elk与kafka_分布式_22

到此,EFK组件就安装完成了。