centos7搭建EFK日志分析系统

2024-06-14 20:58

本文主要是介绍centos7搭建EFK日志分析系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前一直在思考微服务或者分布式的日志解决方案,最近刚好看到这篇文章,收集一下

文章转载地址:https://raye.wang/da-jian-elkfen-bu-shi-ri-zhi-huan-jing/

前言

EFK可能都不熟悉,实际上EFK是大名鼎鼎的日志系统ELK的一个变种

在没有分布式日志的时候,每次出问题了需要查询日志的时候,需要登录到Linux服务器,使用命令cat -n xxxx|grep xxxx 搜索出日志在哪一行,然后cat -n xxx|tail -n +n行|head -n 显示多少行,这样不仅效率低下,而且对于程序异常也不方便查询,日志少还好,一旦整合出来的日志达到几个G或者几十G的时候,仅仅是搜索都会搜索很长时间了,当然如果知道是哪天什么时候发生的问题当然也方便查询,但是实际上很多时候有问题的时候,是不知道到底什么时候出的问题,所以就必须要在聚合日志中去搜索(一般日志是按照天来分文件的,聚合日志就是把很多天的日志合并在一起,这样方便查询),而搭建EFK日志分析系统的目的就是将日志聚合起来,达到快速查看快速分析的目的,使用EFK不仅可以快速的聚合出每天的日志,还能将不同项目的日志聚合起来,对于微服务和分布式架构来说,查询日志尤为方便,而且因为日志保存在Elasticsearch中,所以查询速度非常之快

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

Elasticsearch

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

FileBeat

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

Kibana

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

EFK架构图 EFK架构图

安装Java JDK

Elasticsearch需要运行在Java 8 及以上,所以需要先安装Java8,下载JavaJDK

wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz?AuthParam=1536892035_945cb24c750d0971b8c5b1925cc723a9  

当然如果要安装其他Java版本,可以将wget后面的URL替换为其他版本的URL,只要版本不低于Java8就行,下载完成后,需要查看下载的文件是后缀是tar.gz(只针对tar.gz,如果是RPM或者其他格式的,请自行安装),如果文件后缀tar.gz还跟了一串代码,则重命名文件

mv jdk-8u181-linux-x64.tar.gz\?AuthParam\=1536892035_945cb24c750d0971b8c5b1925cc723a9 jdk-8u181-linux-x64.tar.gz  

解压

tar -zxvf jdk-8u181-linux-x64.tar.gz  

编辑环境变量

vi /etc/profile  

在文件末尾加上

JAVA_HOME=/usr/local/jdk1.8.0_181/  
JRE_HOME=$JAVA_HOME/jre  
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib  
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin  
export JAVA_HOME JRE_HOME CLASS_PATH PATH

其中/usr/local/jdk1.8.0_181/替换成自己Java jdk解压出来的主目录,wq保存退出,使配置生效

source /etc/profile  

查看是否安装成功

java -version  

如果正常输出Java版本则安装成功

安装Elasticsearch

下载Elasticsearch,本文以Elasticsearch6.2.4为例,当前Elasticsearch最新版本为Elasticsearch6.4.0,注意Elasticsearch、Kibana、FileBeat一定要使用相同的版本

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz  

解压

tar -zxvf elasticsearch-6.2.4.tar.gz  

进入Elasticsearch主目录,修改配置

vi config/elasticsearch.yml  

添加以下配置,或者将对应的配置注释取消修改

network.host: 0.0.0.0  
http.port: 9200  

由于Elasticsearch不能使用root用户打开,所以需要专门创建一个用户来启动Elasticsearch

$ adduser elastic
#设置密码
$ passwd elastic
#需要输入2次密码
#授权
$ chmod -R 777 /usr/local/elasticsearch-6.2.4
#切换用户
$ su elastic

创建的用户名为elastic,其中/usr/local/elasticsearch-6.2.4为解压出来的Elasticsearch主目录

启动Elasticsearch

./bin/elasticsearch

如果遇到错误:max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]

vi /etc/security/limits.conf  

如果有 * soft nofile 65535 * hard nofile 65535 则将65535修改为65536,如果没有则在后面添加,注意此处的65535对应descriptors [65535]中的65535,修改后的值65536对应increase to at least [65536],所以当提示不一致时,需要根据具体的错误提示具体修改

如果遇到错误: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

vi /etc/sysctl.conf  

添加配置

vm.max_map_count=262144  

并执行命令

sysctl -p  

以上2个修改需要在root用户权限修改,如果是使用xshell开两个窗口的话修改完成之后一定要断开重新登录一下,启动成功用执行命令

curl 127.0.0.1:9200  

会得到类似以下json

{"name" : "dQIO4Ad","cluster_name" : "elasticsearch","cluster_uuid" : "P8KtmO3vQdactRW1jX9JnQ","version" : {"number" : "6.2.4","build_hash" : "ccec39f","build_date" : "2018-04-12T20:37:28.497551Z","build_snapshot" : false,"lucene_version" : "7.2.1","minimum_wire_compatibility_version" : "5.6.0","minimum_index_compatibility_version" : "5.0.0"},"tagline" : "You Know, for Search"
}

安装Kibana

下载Kibana

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-linux-x86_64.tar.gz  

解压

tar -zxvf kibana-6.2.4-linux-x86_64.tar.gz  

进入主目录,修改配置

vi config/kibana.yml  

添加以下配置或者取消注释并修改

elasticsearch.url: "http://localhost:9200"  
server.host: "0.0.0.0"  
kibana.index: ".kibana"  

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

./bin/kibana

安装FileBeat

下载FileBeat

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

解压

tar -zxvf filebeat-6.2.4-linux-x86_64.tar.gz  

进入主目录,修改配置

vi filebeat.yml  

找到类似以下的配置并修改

filebeat.prospectors:  
- type: logenabled: truepaths:- /var/xxx/*.log- /var/xxx/*.outmultiline.pattern: ^\[multiline.negate: truemultiline.match: after
setup.kibana:  host: "localhost:5601"
output.elasticsearch:  hosts: ["localhost:9200"]

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

启动FileBeat

./filebeat -c /usr/local/filebeat/filebeat.yml

/usr/local/filebeat/filebeat.yml为filebeat 的配置文件地址,需要根据实际情况修改,启动后FileBeat就会自动收集日志了

配置Kibana

打开浏览器进入http://127.0.0.1:5601,会出现如下页面: Kibana首页 点击Management进入配置 Kibana Management页面 点击进入Index Patterns Kibana  Index Patterns 如图所示,FileBeat默认创建的Elasticsearch索引格式为filebeat-版本号-日期,所以需要在第一个红框的输入框中输入

filebeat-6.2.4-*  

能匹配到Elasticsearch的索引,第二个红框出会显示出Elasticsearch中已有的索引,点击Next step进入下一步 Kibana 选择时间属性 点击Create index pattern完成配置,配置完成后点击 Discover就能查看日志了,还能搜索,如下图 Kibana效果图 至此EFK就搭建完毕了

这篇关于centos7搭建EFK日志分析系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1061492

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe