IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 图文详解搭建 ELK+EFK 日志分析系统 -> 正文阅读

[大数据]图文详解搭建 ELK+EFK 日志分析系统


一、配置 ELK 日志分析系统

1. 拓扑图

在这里插入图片描述

  • 配置和安装 ELK 日志分析系统,安装集群方式,2个 elasticsearch节点, 并监控 tomcat 服务器日志
主机操作系统IP地址主要软件
Node1Centos7.4192. 168.8.15Elasticsearch、Kibana
Node2Centos7.4192.168.8.16Elasticsearch
apacheCentos7.4192.168.8.17Logstash

2. 环境配置

  • 关闭防火墙,更改主机名,查看主机映射,配置Java环境
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname apache

#node1和node2节点操作一样
vim /etc/hosts
192.168.8.15 node1
192.168.8.16 node2
上传jdk压缩包至opt目录下
tar xzvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
mv jdk1.8.0_91 jdk
vim /etc/profile
#行尾加入下面内容													
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

source /etc/profile
java -version

在这里插入图片描述
在这里插入图片描述

3. 安装 Elasticsearch(node1和node2)

#安装包放到opt目录下并解包
cd /opt/
rpm -ivh elasticsearch-5.5.1\(1\).rpm
#加载系统服务
systemctl daemon-reload
systemctl enable elasticsearch.service
#备份配置文件
cd /etc/elasticsearch/
cp elasticsearch.yml elasticsearch.yml.bak
#修改主配置文件
vim elasticsearch.yml
17行	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							#不在启动的时候锁定内存(前端缓存,与IOPS-性能测试方式,每秒读写次数相关)
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"]	#集群发现通过单播实现

#检查配置
grep -v "^#" /etc/elasticsearch/elasticsearch.yml

在这里插入图片描述

  • node2 节点主配置文件需把节点名改为node2
    在这里插入图片描述

  • 创建数据存放路径并授权

mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/

  • 开启服务并查看
systemctl start elasticsearch.service 
netstat -antp | grep 9200

在这里插入图片描述
在这里插入图片描述

  • 查看节点信息,用宿主机浏览器打开 http://192.168.8.15:9200

在这里插入图片描述
在这里插入图片描述

  • 检查集群的健康和状态
浏览器打开 
http://192.168.8.15:9200/_cluster/health?pretty
http://192.168.8.15:9200/_cluster/state?pretty

在这里插入图片描述

在这里插入图片描述

4. 安装 elasticsearch-head 插件

查看集群的方式可以通过安装插件来进行优化

  • ① 编译安装 node 组件依赖包
#将软件包传至本目录下
cd /opt
yum install -y gcc gcc-c++.x86_64 ++ make

tar zxvf node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure 
make -j 4 && make install
  • ② 安装 phantomjs(前端框架)
#软件包传至src目录
cd /usr/local/src/
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
cd phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin
  • ③ 安装 elasticsearch-head(数据可视化工具)
#将软件包传至src目录下
cd /usr/local/src/
tar zxvf elasticsearch-head.tar.gz
cd elasticsearch-head/
npm install

在这里插入图片描述

在这里插入图片描述

  • ④ 修改主配置文件
cd 

vim /etc/elasticsearch/elasticsearch.yml
#在尾部添加配置
http.cors.enabled: true						#开启跨域访问支持,默认为false
http.cors.allow-origin: "*"					#跨域访问允许的域名地址

systemctl restart elasticsearch.service
  • ⑤ 启动 elasticsearch-head
cd /usr/local/src/elasticsearch-head/
npm run start &

netstat -lnupt |grep -E '9[1-2]00'

在这里插入图片描述
在这里插入图片描述

  • 用浏览器打开测试

打开浏览器,访问 http://192.168.8.15:9100/
然后在 Elasticsearch 后面的栏目中输入 http://192.168.8.15:9200,点击连接
查看群集颜色是否是健康的绿色
node2进行相同的操作

在这里插入图片描述
在这里插入图片描述

  • 在 node1 上创建索引,索引名 index-demo,类型为test,可以看到成功创建
curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"sb","mesg":"hello world"}'

在这里插入图片描述

  • 浏览器登录node1查看索引信息

可以看见索引默认被分片5个,并且有一个副本
点击数据浏览,会发现在node1上创建的索引为index-demo,类型为test这些相关的信息

在这里插入图片描述
在这里插入图片描述

5. 安装 logstash

  • 192.168.8.17 上同样需要配置Java环境
hostnamectl set-hostname apache
yum install -y httpd
systemctl start httpd.service 
systemctl status httpd.service 

在这里插入图片描述

  • ① 安装 logstash
#将软件包传至opt目录下
cd /opt
rpm -ivh logstash-5.5.1.rpm
systemctl start logstash.service
systemctl enable logstash.service

#建立软连接,方便系统识别
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

在这里插入图片描述

  • ② 做对接测试 logstash(Apache)与 elasticsearch(node)功能是否正常
Logstash [选项] [对象]
-f:通过这个选项可以指定logstash的配置文件,根据配置文件配置logstash
-e:后面跟着字符串 该字符串可以被当做logstash的配置(如果是" ",则默认使用stdin作为输入、stdout作为输出)
-t:测试配置文件是否正确,然后退出
logstash -e 'input { stdin{} } output { stdout{} }'

#输入内容
www.baidu.com		

在这里插入图片描述

  • ③ 使用 rubydebug 显示详细输出,codec 为一种编解码器
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.8.15:9200"] } }'
...
#输入内容
www.baidu.com		
...

在这里插入图片描述

  • ④ 使用浏览器访问 http://192.168.8.15:9100/ ,查看索引信息
    在这里插入图片描述

在这里插入图片描述

  • ⑤ 登录 Apache 主机做对接配置(Kibana)
#Logstash配置文件主要由三部分组成:input、output、filter(根据需要)

chmod o+r /var/log/messages
ll /var/log/messages

在这里插入图片描述

#配置文件中定义的是收集系统日志(system)
vim /etc/logstash/conf.d/system.conf
input {
		file{
        path => "/var/log/messages"
        type => "system"
        start_position => "beginning"
			}
		}

output {
        elasticsearch {
          hosts => ["192.168.8.15:9200"]
          index => "system-%{+YYYY.MM.dd}"
					  }
       }

systemctl restart logstash.service
  • ⑥ 浏览器访问 http://192.168.8.15:9100/ 查看索引信息

在这里插入图片描述

6. 安装 kibana (node1)

  • ① 安装 kibana
cd /usr/local/src/
#将软件包传至src目录下
rpm -ivh kibana-5.5.1-x86_64.rpm

cd /etc/kibana/
cp kibana.yml kibana.yml.bak

vim kibana.yml
2行	server.port: 5601                						#kibana打开的端口
7行	server.host: "0.0.0.0"           						#kibana侦听的地址
21行	elasticsearch.url: "http://192.168.8.15:9200"		#和elasticsearch建立联系
30行	kibana.index: ".kibana"								#在elasticsearch中添加.kibana索引


systemctl start kibana.service
systemctl enable kibana.service

在这里插入图片描述

7. 验证结果

  • ② 浏览器访问 192.168.8.15:5601

首次登录创建一个索引 名字:system-*

①下面输入system-*
②然后点下面的出面的 create 按钮创建
③点左上角的Discover按钮,会发现system-*信息
④点下面的host旁边的add,会发现右面的图只有Time和host选项了

在这里插入图片描述

在这里插入图片描述

  • ③ 对接 Apache 主机的 Apache 日志文件

Apache:192.168.8.17



cd /etc/logstash/conf.d/
touch apache_log.conf

vim apache_log.conf
input {
       file{
        path => "/etc/httpd/logs/access_log"
        type => "access"
        start_position => "beginning"
        }
       file{
        path => "/etc/httpd/logs/error_log"
        type => "error"
        start_position => "beginning"
        }
        
      }
output {
        if [type] == "access" {
        elasticsearch {
          hosts => ["192.168.8.15:9200"]
          index => "apache_access-%{+YYYY.MM.dd}"
          }
        }
        if [type] == "error" {
        elasticsearch {
          hosts => ["192.168.8.15:9200"]
          index => "apache_error-%{+YYYY.MM.dd}"
          }
        }
        }


/usr/share/logstash/bin/logstash -f apache_log.conf
  • 验证结果

① 浏览器访问 http://192.168.8.17,访问 apache

② 访问 http://192.168.8.15:9100/,查看索引信息

③ 访问 http://192.168.8.15:5601 点击左下角 management 选项 index patterns create index pattern 分别创建 "apache_error-"和"apache_access-"的索引

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、配置 EFK 日志分析系统

1. EFK 简介

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

  • EFK 和 ELK 区别:

收集日志的组件由 Logstash 替换成了 FileBeat,因为 Filebeat 相对于 Logstash 来说有2个好处:
① 侵入低,无需修改 elasticsearch 和 kibana 的配置;
② 性能高,IO 占用率比 logstash 小太多;

2. 环境部署

  • 拓扑图

在这里插入图片描述

主机操作系统IP地址主要软件
Node1Centos7.4192. 168.8.15Elasticsearch、Kibana
Node2Centos7.4192.168.8.16Elasticsearch
tomcatCentos7.4192.168.8.17filebeat、tomcat
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname tomcat

3. 安装 Elasticsearch(node1和node2)

  • node1和 node2 节点操作相同
vim /etc/hosts
192.168.8.15 node1
192.168.8.16 node2
上传jdk压缩包至opt目录下
tar xzvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
mv jdk1.8.0_91 jdk
vim /etc/profile
#行尾加入下面内容													
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

source /etc/profile
java -version

在这里插入图片描述
在这里插入图片描述

#安装包放到opt目录下并解包
cd /opt/
rpm -ivh elasticsearch-5.5.1\(1\).rpm
#加载系统服务
systemctl daemon-reload
systemctl enable elasticsearch.service
#备份配置文件
cd /etc/elasticsearch/
cp elasticsearch.yml elasticsearch.yml.bak
#修改主配置文件
vim elasticsearch.yml
17行	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							#不在启动的时候锁定内存(前端缓存,与IOPS-性能测试方式,每秒读写次数相关)
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"]	#集群发现通过单播实现

#检查配置
grep -v "^#" /etc/elasticsearch/elasticsearch.yml

在这里插入图片描述

  • node2 节点主配置文件需把节点名改为node2
    在这里插入图片描述

  • 创建数据存放路径并授权

mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/

  • 开启服务并查看
systemctl start elasticsearch.service 
netstat -antp | grep 9200

在这里插入图片描述
在这里插入图片描述

  • 查看节点信息,用宿主机浏览器打开 http://192.168.8.15:9200

在这里插入图片描述
在这里插入图片描述

  • 检查集群的健康和状态
浏览器打开 
http://192.168.8.15:9200/_cluster/health?pretty
http://192.168.8.15:9200/_cluster/state?pretty

在这里插入图片描述

在这里插入图片描述

4. 安装 elasticsearch-head 插件

查看集群的方式可以通过安装插件来进行优化

  • ① 编译安装 node 组件依赖包
#将软件包传至本目录下
cd /opt
yum install -y gcc gcc-c++.x86_64 ++ make

tar zxvf node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure 
make -j 4 && make install
  • ② 安装 phantomjs(前端框架)
#软件包传至src目录
cd /usr/local/src/
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
cd phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin
  • ③ 安装 elasticsearch-head(数据可视化工具)
#将软件包传至src目录下
cd /usr/local/src/
tar zxvf elasticsearch-head.tar.gz
cd elasticsearch-head/
npm install

在这里插入图片描述

在这里插入图片描述

  • ④ 修改主配置文件
cd 

vim /etc/elasticsearch/elasticsearch.yml
#在尾部添加配置
http.cors.enabled: true						#开启跨域访问支持,默认为false
http.cors.allow-origin: "*"					#跨域访问允许的域名地址

systemctl restart elasticsearch.service
  • ⑤ 启动 elasticsearch-head
cd /usr/local/src/elasticsearch-head/
npm run start &

netstat -lnupt |grep -E '9[1-2]00'

在这里插入图片描述
在这里插入图片描述

  • 用浏览器打开测试

打开浏览器,访问 http://192.168.8.15:9100/
然后在 Elasticsearch 后面的栏目中输入 http://192.168.8.15:9200,点击连接
查看群集颜色是否是健康的绿色
node2进行相同的操作

在这里插入图片描述
在这里插入图片描述

  • 在 node1 上创建索引,索引名 index-demo,类型为test,可以看到成功创建
curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"sb","mesg":"hello world"}'

在这里插入图片描述

  • 浏览器登录node1查看索引信息

可以看见索引默认被分片5个,并且有一个副本
点击数据浏览,会发现在node1上创建的索引为index-demo,类型为test这些相关的信息

在这里插入图片描述
在这里插入图片描述

5. 安装配置 Tomcat

192.168.8.17 上安装tomcat
在安装 Tomcat 之前必须先安装 JDK,因为 JDK 是 java 语言的软件包开发工具,其中包含了JVM(java 虚拟机),编写好的 java 源程序经过编译可形成 java 字节码,只要安装了 JDK ,就可用 JVM 解释这些字节码文件,从而保证了 java 的跨平台性。

#jdk和tomcat安装包放入opt目录下
rpm -ivh jdk-8u201-linux-x64.rpm 

vim /etc/profile.d/java.sh				
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar		#可执行文件的位置
export PATH=$JAVA_HOME/bin:$PATH

source /etc/profile.d/java.sh          
java -version						   
tar zxvf apache-tomcat-9.0.16.tar.gz					  	#解包
mv apache-tomcat-9.0.16 /usr/local/tomcat     		  		#转移包位置并改名

在这里插入图片描述

  • 创建软连接,优化开启命令,便于管理
ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/		
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/
#启动 tomcat 服务 
startup.sh

在这里插入图片描述

  • 使用浏览器访问,查看服务开启是否成功

在这里插入图片描述

6. 安装 filebeat

#安装包放在opt目录下
cd /opt
rpm -ivh filebeat-5.5.1-x86_64.rpm  

cd /etc/filebeat/
cp filebeat.yml filebeat.yml.bak					#对配置文件进行备份
vim /etc/filebeat/filebeat.yml						#编辑配置文件
12 filebeat.prospectors:
18 - input_type: log
21   paths:
22     - /usr/local/tomcat/logs/*.log
81 output.elasticsearch:
83 hosts: ["192.168.8.15:9200"]
#手动载入ES索引模板,成功会返回true
curl -XPUT 'http://192.168.8.15:9200/_template/filebeat?pretty' -d@/etc/filebeat/file
beat.template.json

#启动filebeat
/etc/init.d/filebeat start

在这里插入图片描述

  • 使用浏览器访问 http://192.168.8.15:9100/ 查看索引信息

在这里插入图片描述

7. 安装 kibana (node1)

#软件包放在src目录下
cd /usr/local/src/
rpm -ivh kibana-5.5.1-x86_64.rpm

cd /etc/kibana/
cp kibana.yml kibana.yml.bak

vim kibana.yml
2行	server.port: 5601                						#kibana打开的端口
7行	server.host: "0.0.0.0"           						#kibana侦听的地址
21行	elasticsearch.url: "http://192.168.3.12:9200"		#和elasticsearch建立联系
30行	kibana.index: ".kibana"								#在elasticsearch中添加.kibana索引


systemctl start kibana.service
systemctl enable kibana.service

在这里插入图片描述

8. 验证结果

  • 使用浏览器访问 192.168.8.15:5601
    在这里插入图片描述

① 登录后创建一个索引 名字:filebeat-*
② 在下面输入ystem-*
③ 然后点最下面的出面的create 按钮创建
④ 点最左上角的Discover按钮,会发现filebeat-*信息

在这里插入图片描述

总结

  • ELK 是由 ElasticSearch、 Logstash和Kiabana 三个开源工具组成的

  • 分别的功能如下:
    ① ES(nosql非关数据库):存储功能和索引
    ② Logstash(收集日志):到应用服务器上拿取log,并进行格式转换后输出到es中,通过input功能来收集/采集log
    ③ filter过滤器:格式化数据,output输出日志到 es 数据库内
    ④ Kibana(展示工具):将es内的数据在浏览器展示出来,通过UI界面展示(可以根据自己的需求对日志进行处理,方便查阅读取)

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

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:24:30  更:2021-11-22 12:25:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:58:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码