ELK是一套解决方案,是Elasticsearch、FileBeat、Kibana三个开源软件的缩写。ELasticsearch 负责日志分析和存储,FileBeat负责日志收集,Kibana负责界面展示。它们之间互相配合,完美衔接,满足了很多场合的应用,是目前主流的一种日志分析系统解决方案。
EFK和ELK的区别在于将收集日志的组件由 Logstash 替换成了 FileBeat。
FileBeat相比于Logstash有两个优点:
侵入低,无需修改 elasticsearch 和 kibana 的配置;
性能高,IO 占用率比 logstash 小;
Logstash 相比于 FileBeat 也有一定的优势。对于日志的格式化处理能力,FileBeat 只是将日志从日志文件中读取出来,如果收集的日志本身是有一定格式的,FileBeat 也可以格式化,但与Logstash 来说,效果差一些。
Elasticsearch 是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负载等。
Filebeat 隶属于 Beats。目前 Beats 包含六种工具:
Packetbeat(搜集网络流量数据)
Metricbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
Filebeat(搜集文件数据)
Winlogbeat(搜集 Windows 事件日志数据)
Auditbeat( 轻量型审计日志采集器)
Heartbeat(轻量级服务器健康采集器)
Kibana可以为 Logstash 、Beats和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
另外,EFK 系统下的各个组件都比较吃内存,后期根据业务需要,EFK 的架构可进行扩展,当 FileBeat 收集的日志越来越多时,为防止数据丢失,可以引入 Redis,而 ElasticSearch 也可扩展为集群,并使用 Head 插件进行管理, 所以要保证服务器有充足的运行内存和磁盘空间。
在一台虚拟机上搭建 EFK 系统来收集 nginx 日志。
在 elasticsearch 官网下载 EFK 安装包,Elasticsearch、Kibana、FileBeat一定要使用相同的版本,目前最新版本为 7.13.2
网盘下载地址:https://pan.baidu.com/s/1Jt00Pzjow_YK49w8zdI97g
提取码:x5xb
安装环境:centos7.4,4核8G。关闭filewalld、SE、swap
[root@localhost ~]# yum -y install glibc-devel gcc-c++ pcre-devel openssl openssl-devel
[root@localhost ~]# tar zxf nginx-1.14.0.tar.gz
[root@localhost ~]# cd nginx-1.14.0
[root@localhost nginx-1.14.0]# mkdir /usr/local/nginx
[root@localhost nginx-1.14.0]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module
[root@localhost nginx-1.14.0]# make && make install
[root@localhost nginx-1.14.0]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx
[root@localhost sbin]# netstat -anpt |grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 10372/nginx
Elasticsearch 的运行需要 java 环境
[root@localhost ~]# tar zxf jdk-8u231-linux-x64.tar.gz -C /usr/local/
[root@localhost ~]# vi /etc/profile
#添加如下内容
export JAVA_HOME=/usr/local/jdk1.8.0_231
export JRE_HOME=/usr/local/jdk1.8.0_231/jre
export CLASS_PATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
[root@localhost ~]# source /etc/profile
[root@localhost ~]# java -version
java version "1.8.0_231"
[root@localhost ~]# tar zxf elasticsearch-7.13.2-linux-x86_64.tar.gz -C /usr/local/
[root@localhost ~]# mv /usr/local/elasticsearch-7.13.2/ /usr/local/elasticsearch
创建一个普通用户来启动 Elasticsearch:
[root@localhost ~]# useradd es
[root@localhost ~]# cd /usr/local
[root@localhost local]# chown -R es.es elasticsearch/
[root@localhost local]# ll
drwxr-xr-x 9 es es 155 6月 11 05:06 elasticsearch
[root@localhost ~]# vi /usr/local/elasticsearch/config/elasticsearch.yml
添加如下内容:
node.name: node-1
network.host: 192.168.4.118
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
[root@localhost ~]# vi /etc/security/limits.conf
#添加如下内容
* soft nofile 65535
* hard nofile 65535
[root@localhost ~]# vi /etc/sysctl.conf
vm.max_map_count=262144
net.ipv4.tcp_retries2=5
[root@localhost ~]# sysctl -p
[root@localhost ~]# swapoff -a #禁用交换分区
切换到es用户,启动es:
[root@localhost ~]# su es
[es@localhost root]$ cd /usr/local/elasticsearch/bin/
[es@localhost bin]$ ./elasticsearch -d -p pid #后台启动
或
[es@localhost bin]$ nohup ./elasticsearch -d -p &
我用的是1.8版本的Java,启动ES时会有warning说JAVA环境较低,后续ES都会引用Java11及以后的版本。
本地测试:或浏览器测试
[root@localhost ~]# tar zxf kibana-7.13.2-linux-x86_64.tar.gz -C /usr/local/
[root@localhost ~]# mv /usr/local/kibana-7.13.2-linux-x86_64/ /usr/local/kibana
[root@localhost ~]# cd /usr/local/kibana/
[root@localhost kibana]# vi config/kibana.yml
#添加如下内容
i18n.locale: "zh-CN" #修改为中文(汉化不是很完善)
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://192.168.4.118:9200"]
kibana.index: ".kibana"
[root@localhost kibana]# cd bin
[root@localhost bin]# ./kibana --allow-root #强制root身份启动,建议为kibana创建一个用户
浏览器访问IP:5601如果正常,则以后台方式运行
[root@localhost bin]# nohup ./kibana --allow-root &
[root@localhost ~]# tar zxf filebeat-7.13.2-linux-x86_64.tar.gz -C /usr/local/
[root@localhost ~]# mv /usr/local/filebeat-7.13.2-linux-x86_64/ /usr/local/filebeat
[root@localhost ~]# vi /usr/local/filebeat/filebeat.yml
#添加如下内容
filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/local/nginx/logs/*.log
setup.kibana:
host: "192.168.4.118:5601"
output.elasticsearch:
hosts: ["192.168.4.118:9200"]
[root@localhost ~]# cd /usr/local/filebeat/
[root@localhost filebeat]# nohup ./filebeat -c filebeat.yml &
[root@localhost filebeat]# ps aux | grep filebeat
root 8664 2.2 1.3 1091420 111344 pts/1 Sl 16:56 0:00 ./filebeat -c filebeat.yml
root 9258 0.0 0.0 112824 984 pts/1 S+ 16:56 0:00 grep --color=auto filebeat
PS:如果使用nohup没有把服务起来去掉nohup再启动一次试试
示例为未汉化操作演示
手动上传日志
导入完成后可以在discover中选择该日志进行查看
附上配置文件解释:
kibana.yul文件详解:https://blog.csdn.net/HeatDeath/article/details/79531297
filebeat.yml文件详解:https://www.cnblogs.com/zlslch/p/6622079.html
elasticsearch-.yml文件详解:https://blog.csdn.net/zmx729618/article/details/80363875
或
https://forum.huawei.com/enterprise/zh/thread-691009.html
—————————————End—————————————