EFK 不是一个软件,而是一套解决方案。EFK 是三个开源软件的缩写,Elasticsearch,FileBeat,Kibana。其中 ELasticsearch 负责日志分析和存储,FileBeat 负责日志收集,Kibana 负责界面展示。它们之间互相配合使用,完美衔接,高效的满足了很多场合的应用,是目前主流的一种日志分析系统解决方案。
EFK 和 ELK 只有一个区别, 收集日志的组件由 Logstash 替换成了 FileBeat,因为 Filebeat 相对于 Logstash 来说有2个好处:
1、侵入低,无需修改 elasticsearch 和 kibana 的配置;
2、性能高,IO 占用率比 logstash 小太多;
ELK可参考:https://blog.51cto.com/14227204/2442249
当然 Logstash 相比于 FileBeat 也有一定的优势,比如 Logstash 对于日志的格式化处理能力,FileBeat 只是将日志从日志文件中读取出来,当然如果收集的日志本身是有一定格式的,FileBeat 也可以格式化,但是相对于Logstash 来说,效果差很多。
Filebeat 隶属于 Beats。目前 Beats 包含六种工具:
- Packetbeat(搜集网络流量数据)
- Metricbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
- Filebeat(搜集文件数据)
- Winlogbeat(搜集 Windows 事件日志数据)
- Auditbeat( 轻量型审计日志采集器)
- Heartbeat(轻量级服务器健康采集器)
另外,EFK 系统下的各个组件都非常吃内存,后期根据业务需要,EFK 的架构可进行扩展,当 FileBeat 收集的日志越来越多时,为防止数据丢失,可引入 Redis,而 ElasticSearch 也可扩展为集群,并使用 Head 插件进行管理, 所以要保证服务器有充足的运行内存和磁盘空间。
一、开始部署
1、安装elasticsearch:
[root@localhost /]# mkdir efk # 个人习惯
[root@localhost /]# cd efk/
[root@localhost efk]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz
[root@localhost efk]# tar zxf elasticsearch-6.2.4.tar.gz -C /usr/local/
[root@localhost efk]# cd /usr/local/
[root@localhost /]# useradd es
[root@localhost local]# mv elasticsearch-6.2.4/ es/
[root@localhost local]# sed -i 's/#network.host: 192.168.0.1/network.host: 0.0.0.0/g' /usr/local/es/config/elasticsearch.yml
[root@localhost local]# sed -i 's/#http.port: 9200/http.port: 9200/g' /usr/local/es/config/elasticsearch.yml
[root@localhost local]# su es # 切换用户启动服务
[es@localhost local]$ /usr/local/es/bin/elasticsearch -d # 服务后台运行
如果遇到错误:max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
[root@localhost local]# echo '* soft nofile 819200' >> /etc/security/limits.conf
[root@localhost local]# echo '* hard nofile 819200' >> /etc/security/limits.conf
[root@localhost local]# echo '* soft nproc 2048' >> /etc/security/limits.conf
[root@localhost local]# echo '* hard nproc 4096' >> /etc/security/limits.conf
[root@localhost local]# echo 'vm.max_map_count=655360' >> /etc/sysctl.conf
[root@localhost local]# sysctl -p
vm.max_map_count = 655360
2、安装kibana:
[root@localhost local]# cd /efk/
[root@localhost efk]# wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-linux-x86_64.tar.gz
[root@localhost local]# mv kibana-6.2.4-linux-x86_64/ kibana/
[root@localhost local]# sed -i 's/#kibana.index: ".kibana"/kibana.index: ".kibana"/g' /usr/local/kibana/config/kibana.yml
[root@localhost local]# sed -i 's/#server.port: 5601/server.port 5601/g' /usr/local/kibana/config/kibana.yml
[root@localhost local]# sed -i 's/#server.host: "localhost"/server.host "0.0.0.0"/g' /usr/local/kibana/config/kibana.yml
[root@localhost local]# sed -i 's/#elasticsearch.url: "http://localhost:9200"/elasticsearch.url: "http://localhost:9200"/g' /usr/local/kibana/config/kibana.yml
[root@localhost /]# /usr/local/kibana/bin/kibana &
3、安装filebeat:
[root@localhost /]# cd /efk/
[root@localhost efk]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4-linux-x86_64.tar.gz
[root@localhost efk]# tar zxf filebeat-6.2.4-linux-x86_64.tar.gz -C /usr/local/
[root@localhost local]# mv filebeat-6.2.4-linux-x86_64/ filebeat/
[root@localhost local]# vim /usr/local/filebeat/filebeat.yml
#找到如下类似内容进行修改
filebeat.prospectors:
- type: log
enabled: true
paths:
- /etc/httpd/logs/*_log # 指定日志文件存放位置
multiline.pattern: ^\[
multiline.negate: true
multiline.match: after
setup.kibana:
host: 192.168.171.134
output.elasticsearch:
hosts: ["192.168.171.134:9200"]
#配置一定要注意格式,是以2个空格为子级,里面的配置都在配置文件中,列出来的只是
要修改的部分,enabled默认为false,需要改成true才会收集日志。其中/var/xxx/*.log修改
为自己的日志路径,注意-后面有一个空格,
如果多个路径则添加一行,一定要注意新行前面的4个空格,multiline开头的几个配置取消
注释就行了,是为了兼容多行日志的情况,setup.kibana中的host取消注释,根据实际情
况配置地址,output.elasticsearch中的host也一样,根据实际情况配置
[root@localhost local]# ./filebeat/filebeat -c /usr/local/filebeat/filebeat.yml # 启动服务
二、配置Kibana
浏览器访问:
至此EFK就搭建完毕了,可以点击descover来查看信息