图文详解搭建 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 插件进行管理, 所以要保证服务器有充足的运行内存和磁盘空间。

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

头发莫的了呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值