1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > EFK日志分析系统

EFK日志分析系统

时间:2024-05-25 15:51:05

相关推荐

EFK日志分析系统

这里写目录标题

一、EFK概述EFK简介优缺点ES数据库FilebeatKibanaEFK扩展二、部署ELK日志分析系统案例拓扑图需求描述设备列表准备安装环境具体部署过程Nginx+Filebeat部署1.部署Nginx安装kibana(node1)

一、EFK概述

EFK简介

EFK 不是一个软件,而是一套解决方案。EFK 是三个开源软件的缩写,Elasticsearch,FileBeat,Kibana。其中 ELasticsearch 负责日志分析和存储,FileBeat 负责日志收集,Kibana 负责界面展示。它们之间互相配合使用,完美衔接,高效的满足了很多场合的应用,是目前主流的一种日志分析系统解决方案。

EFK 和 ELK 只有一个区别, 收集日志的组件由 Logstash 替换成了 FileBeat

优缺点

Filebeat 相对 Logstash 的优点:

侵入低,无需修改 elasticsearch 和 kibana 的配置;性能高,IO 占用率比 logstash 小太多;

当然 Logstash 相比于 FileBeat 也有一定的优势,比如 Logstash 对于日志的格式化处理能力,FileBeat 只是将日志从日志文件中读取出来,当然如果收集的日志本身是有一定格式的,FileBeat 也可以格式化,但是相对于Logstash 来说,效果差很多。

ES数据库

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

Filebeat

Filebeat 隶属于 Beats。目前 Beats 包含六种工具:

Packetbeat(搜集网络流量数据)Metricbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)Filebeat(搜集文件数据)Winlogbeat(搜集 Windows 事件日志数据)Auditbeat( 轻量型审计日志采集器)Heartbeat(轻量级服务器健康采集器)

Kibana

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

EFK扩展

另外,EFK 系统下的各个组件都非常吃内存,后期根据业务需要,EFK 的架构可进行扩展,当 FileBeat 收集的日志越来越多时,为防止数据丢失,可引入 Redis,而 ElasticSearch 也可扩展为集群,并使用 Head 插件进行管理, 所以要保证服务器有充足的运行内存和磁盘空间。

ps:曾经试图在只有 1 个 G 内存空间的阿里云服务器上搭建 一个最简易的 EFK 日志分析系统,结果是 Kibana 服务开启之后,Elasticsearch 服务就挂了,最后纠结了半天服务也起不起来。

二、部署ELK日志分析系统

案例拓扑图

需求描述

配置EFK日志分析群集

使用Filebeat

使用Kibana乍看分析日志

设备列表

准备安装环境

关闭防火墙和Selinux

Node1、Node2节点内存分配4G,Apache节点分配1G内存

通过VMware虚拟网络Vmnet8网络连接

具体部署过程

###登录192.168.91.10 更改主机名 配置域名解析 查看Java环境###

[root@location ~]# hostnamectl set-hostname node1[root@location ~]# su[root@location ~]# java -versionopenjdk version "1.8.0_131"OpenJDK Runtime Environment (build 1.8.0_131-b12)OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)[root@node1 ~]# systemctl stop firewalld[root@node1 ~]# systemctl disable firewalld[root@node1 ~]# setenforce 0

安装elasticsearch

[root@node1 ~]# vi /etc/hosts192.168.91.10 node1192.168.91.20 node2[root@node1 ~]# cd /opt/elk[root@node1 elk]# rpm -ivh elasticsearch-5.5.0.rpm

加载系统服务

[root@node1 elk]# systemctl daemon-reload[root@node1 elk]# systemctl enable elasticsearch.service

修改ELasticsearch配置文件

[root@node1 elk]# cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak'//复制一份备份文件'[root@node1 elk]# vim /etc/elasticsearch/elasticsearch.yml17//cluster.name: my-elk-cluster'//集群名字---需相同'23//node.name: node1'//节点名字---跟主机名相同'33//path.data: /data/elk_data'//数据存放位置'37//path.logs: /var/log/elasticsearch/'//日志存放路径'43//bootstrap.memory_lock: false'//不在启动的时候锁定内存'55//network.host: 0.0.0.0'//提供服务绑定的IP地址,0.0.0.0代表所有地址'59//http.port: 9200'//监听端口为9200'68//discovery.zen.ping.unicast.hosts: ["node1", "node2"]'//集群发现通过单播实现'[root@node1 elk]# grep -v "^#" /etc/elasticsearch/elasticsearch.ymlcluster.name: my-elk-clusternode.name: node1path.data: /data/elk_datapath.logs: /var/log/elasticsearch/bootstrap.memory_lock: falsenetwork.host: 0.0.0.0http.port: 9200discovery.zen.ping.unicast.hosts: ["node1", "node2"]

创建数据存放路径并授权

[root@node1 elk]# mkdir -p /data/elk_data[root@node1 elk]# chown elasticsearch:elasticsearch /data/elk_data/

启动elasticsearch是否成功开启

[root@node1 elk]# systemctl start elasticsearch.service[root@node1 elk]# netstat -anptu | grep 9200tcp6 00 :::9200 :::*LISTEN5715/java

查看节点信息,用真机192.168.91.10的浏览器打开http://192.168.91.10:9200/

{"name" : "node1","cluster_name" : "my-elk-cluster","cluster_uuid" : "7BztY_8bQFSWHdrykRbTDw","version" : {"number" : "5.5.0","build_hash" : "260387d","build_date" : "-06-30T23:16:05.735Z","build_snapshot" : false,"lucene_version" : "6.6.0"},"tagline" : "You Know, for Search"}

查看节点信息,用真机192.168.91.20的浏览器打开http://192.168.91.10:9200/

{"name" : "node2","cluster_name" : "my-elk-cluster","cluster_uuid" : "7BztY_8bQFSWHdrykRbTDw","version" : {"number" : "5.5.0","build_hash" : "260387d","build_date" : "-06-30T23:16:05.735Z","build_snapshot" : false,"lucene_version" : "6.6.0"},"tagline" : "You Know, for Search"}

集群检查健康与状态(node1、node2)

查看健康192.168.91.10:9200/_cluster/health?pretty

{"cluster_name" : "my-elk-cluster","status" : "green","timed_out" : false,"number_of_nodes" : 2,"number_of_data_nodes" : 2,"active_primary_shards" : 0,"active_shards" : 0,"relocating_shards" : 0,"initializing_shards" : 0,"unassigned_shards" : 0,"delayed_unassigned_shards" : 0,"number_of_pending_tasks" : 0,"number_of_in_flight_fetch" : 0,"task_max_waiting_in_queue_millis" : 0,"active_shards_percent_as_number" : 100.0}

查看状态192.168.91.10:9200/_cluster/state?pretty

{"cluster_name" : "my-elk-cluster","version" : 6,"state_uuid" : "ZUdJ3zl_SdGNvojaHfxifA","master_node" : "M6gRPmGTQZCsA3c4TjrMpQ","blocks" : {},"nodes" : {"fXvs7sVhTkKOLgqSCFt_bw" : {"name" : "node1","ephemeral_id" : "1OsaMQvhTv6yacqF3o-3XA","transport_address" : "192.168.91.10:9300","attributes" : {}},"M6gRPmGTQZCsA3c4TjrMpQ" : {"name" : "node2","ephemeral_id" : "em66iSy7QqGwEn25gZkOTg","transport_address" : "192.168.91.20:9300","attributes" : {}}},"metadata" : {"cluster_uuid" : "7BztY_8bQFSWHdrykRbTDw","templates" : {},"indices" : {},"index-graveyard" : {"tombstones" : [ ]}},"routing_table" : {"indices" : {}},"routing_nodes" : {"unassigned" : [ ],"nodes" : {"M6gRPmGTQZCsA3c4TjrMpQ" : [ ],"fXvs7sVhTkKOLgqSCFt_bw" : [ ]}}}

安装node组件依赖包(node1、node2)

[root@node1 ~]# cd /opt/elk/[root@node1 elk]# yum -y install gcc gcc-c++[root@node1 elk]# tar zxvf node-v8.2.1.tar.gz[root@node1 elk]# cd node-v8.2.1/[root@node1 node-v8.2.1]# ./configure[root@node1 node-v8.2.1]# make -j3[root@node1node-v8.2.1]# make install

安装phantomjs前端框架(node1、node2)

[root@node1 ~]# cd /opt/elk/[root@node1 elk]# tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src[root@node1 elk]# cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin[root@node1 bin]# cp phantomjs /usr/local/bin

安装Elasticsearch-head数据可视化工具(node1、node2)

[root@node1 ~]# cd /opt/elk/[root@node1 elk]# tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/[root@node1 elk]# cd /usr/local/src/elasticsearch-head/[root@node1 elasticsearch-head]# npm install

修改Elasticsearch主配置文件(node1、node2)

[root@node1 elasticsearch-head]# vim /etc/elasticsearch/elasticsearch.yml...http.cors.enabled: true'//开启跨域访问支持,默认为false'http.cors.allow-origin: "*"'//跨域访问允许的域名地址'[root@node1 elasticsearch-head]# systemctl restart elasticsearch

启动Elasticsearch-head 启动服务器(node1、node2)

[root@node1 ~]# cd /usr/local/src/elasticsearch-head/[root@node1 elasticsearch-head]# npm run start &'//切换到后台运行'[1] 59396[root@node1 elasticsearch-head]# > elasticsearch-head@0.0.0 start /usr/local/src/elasticsearch-head> grunt serverRunning "connect:server" (connect) taskWaiting forever...Started connect web server on http://localhost:9100[root@node1 elasticsearch-head]# netstat -antp | grep 9200[root@node1 elasticsearch-head]# netstat -antp | grep 9100

真机浏览器输入20.0.0.10:9100、20.0.0.20:9100

在location处输入http://192.168.91.10:9200/可以看到群集健康状态是绿色的,以及两个节点

新建索引

加粗的是主文件的,细框的是备份文件,不论哪个节点宕机,存储都不会丢失,很安全,一个节点有五个分片,两个节点共10个分片d

测试

#192.168.91.10#插入一个数据进行测试[root@node1 ~]# curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type:application/json' -d '{"user":"zhangsan","mesg":"hello world"}'{"_index" : "index-demo","_type" : "test","_id" : "1","_version" : 1,"result" : "created","_shards" : {"total" : 2,"successful" : 2,"failed" : 0},"created" : true}

刷新一下,可以看到存储的分片处理与备份,暂时不存在节点间的主备关系。

Nginx+Filebeat部署

更改主机名及关闭防火墙

[root@nginx ~]# hostnamectl set-hostname nginx#关闭防火墙与核心防护[root@nginx ~]# setenforce 0[root@nginx ~]# systemctl stop firewalld

1.部署Nginx

1.解压跨平台组件包和源码包将跨平台组件包移动到源码包/opt目录下nginx-1.12.2.tar.gz```shell[root@nginx ~]# cd /opt[root@nginx opt]# tar xzvf nginx-1.12.2.tar.gz

2.安装编译器和其他工具

[root@nginx opt]# yum -y install gcc \gcc-c++ \make \pcre-devel \expat-devel \perl \zlib-devel \pcre

3.configure配置

[root@nginx opt]# cd nginx-1.12.2[root@nginx nginx-1.12.2]# ./configure \--prefix=/usr/local/nginx \--user=nginx \--group=nginx \--with-http_stub_status_module

4.编译安装

[root@nginx ~]# make && make install

为了使Nginx服务器的运行更加方便,可以为主程序nginx创建链接文件,以便管理员直接执行“nginx”命令就可以调用Nginx的主程序

[root@nginx ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

6.创建运行用户,组

[root@nginx ~]# useradd -M -s /sbin/nologin nginx

7.开启nginx,关闭防火墙

[root@nginx ~]# systemctl stop firewalld.service [root@nginx ~]# setenforce 0[root@nginx ~]# nginx[root@nginx ~]# netstat -ntap |grep 80tcp 00 0.0.0.0:80 0.0.0.0:*LISTEN5396/nginx: master tcp 00 192.168.197.192:56680 192.168.100.3:445 ESTABLISHED

###2.部署filebeat环境

解压

[root@nginx opt]# tar -zxvf filebeat-7.0.1-linux-x86_64.tar.gz[root@nginx opt]# mv filebeat-7.0.1-linux-x86_64 /usr/local/filebeat

编辑配置文件

[root@nginx ~]# cd /usr/local/filebeat[root@nginx filebeat]# vim filebeat.ymlfilebeat.inputs:- type: logenabled: truepaths:- /usr/local/nginx/logs/*.logsetup.kibana:host: "localhost:5601"output.elasticsearch:hosts: ["localhost:9200"]

后台启动 filebeat

[root@nginx filebeat]# nohup ./filebeat -c filebeat.yml &

安装kibana(node1)

安装kibana

上传软件包到/opt/目录下

[root@node1 ~]# cd /opt/elk[root@node1 elk]# rpm -ivh kibana-5.5.1-x86_64.rpm'//安装rpm包'[root@node1 elk]# cd /etc/kibana/[root@node1 kibana]# cp -p kibana.yml kibana.yml.bak'//备份'[root@node1 kibana]# vim /etc/kibana/kibana.yml2//server.port: 5601'//打开kibana端口'7//server.host: "0.0.0.0"'//kibana监听地址---监听所有'21//elasticsearch.url: "http://主节点IP:9200"'//与elasticsearch建立连接'30//kibana.index: ".kibana"'//在elasticsearch中添加.kibana索引---测试使用'[root@node1 kibana]# systemctl start kibana.service'//启动kibana服务'[root@node1 kibana]# systemctl enable kibana.service'//设置开机自启'[root@node1 kibana]# nohup ./kibana &n '//后台启动'

访问192.168.91.10:5601进行查看视图

Discover里查看日志,图表式显示

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。