ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台

#6.6版本
###ELK stack:是软件集合elksticsearch、logstash、kibana的集合,都是开源软件
#这是集群cluster,若为单机节点,直接起;

本次实验是:一个master 两个:worker node

msater:一般3台;一般服务器
node:消耗大;
client:内存多;

搭建实验环境

3台虚拟机redhat7.5系统,内存:2G,cpu:2

主机信息 作用
server1(172.25.8.1) master节点
server2(172.25.8.2) node1节点
server3(172.25.8.3) node2节点

(1)用真机创建三个虚拟机

[root@foundation8 images]# qemu-img create -f qcow2 -b rhel7.5-1.qcow2 elk1 
[root@foundation8 images]# qemu-img create -f qcow2 -b rhel7.5-1.qcow2 elk2 
[root@foundation8 images]# qemu-img create -f qcow2 -b rhel7.5-1.qcow2 elk3

(2)用真机连接三台虚拟机
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第1张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第2张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第3张图片

关闭防火墙和selinux

elksticsearch(6.6版)环境部署

软件包的下载:
清华大学开源软件镜像站

[root@server1 ~]# ls
elasticsearch-6.6.1.rpm  elasticsearch-head-master.zip  jdk-8u171-linux-x64.rpm   #这些安装包是我提前下载好的
[root@server1 ~]# rpm -ivh jdk-8u171-linux-x64.rpm  #安装jdk
[root@server1 ~]# rpm -ivh elasticsearch-6.6.1.rpm #安装es
[root@server1 ~]# systemctl daemon-reload   #重新加载服务程序的配置文件
[root@server1 ~]# systemctl enable elasticsearch.service              
[root@server1 systemd]# cd /etc/elasticsearch/
[root@server1 elasticsearch]# vim elasticsearch.yml   #修改配置文件
 17 cluster.name: my-es  #集群名称
 23 node.name: server1    #节点主机名称
 35 path.data: /var/lib/elasticsearch  #数据路径
 39 path.logs: /var/log/elasticsearch  #日志路径
 45 bootstrap.memory_lock: true  
 57 network.host: 172.25.8.1
 61 http.port: 9200

[root@server1 elasticsearch]# systemctl start elasticsearch.service  #开启es服务
[root@server1 elasticsearch]# systemctl status elasticsearch.service #查看es服务状态

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第4张图片

[root@server1 elasticsearch]# cat /var/log/elasticsearch/my-es.log#查看es的日志  #会有debug报错

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第5张图片

[root@server1 elasticsearch]# vim /etc/security/limits.conf 
 62 elasticsearch soft memlock unlimited
 63 elasticsearch hard memlock unlimited
[root@server1 elasticsearch]# systemctl status elasticsearch.service  #查看服务状态有报错

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第6张图片

[root@server1 elasticsearch]# vim /usr/lib/systemd/system/elasticsearch.service
 39 LimitMEMLOCK=infinity

在这里插入图片描述

[root@server1 elasticsearch]# systemctl daemon-reload 
[root@server1 elasticsearch]# yum install -y bash-* #下载可以tab补齐

在这里插入图片描述

[root@server1 elasticsearch]# vim /etc/security/limits.conf 
 65 elasticsearch - nofile 65535  #打开最大文件数
 66 elasticsearch - nproc 4096 #打开最大进程
 

在这里插入图片描述
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第7张图片
#记住每次修改过配置文件都要进行重启服务
在这里插入图片描述

[root@server1 elasticsearch]# cat /var/log/elasticsearch/my-es.log#查看es的日志 ,显示服务以生效

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第8张图片
查看端口:9200和9300被打开
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第9张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第10张图片

[root@server1 ~]# unzip elasticsearch-head-master.zip
[root@server1 ~]# cd elasticsearch-head-master/

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第11张图片
[root@server1 ~]# ls
elasticsearch-6.6.1.rpm nodejs-9.11.2-1nodesource.x86_64.rpm
elasticsearch-head-master
elasticsearch-head-master.zi jdk-8u171-linux-x64.rpm
[root@server1 ~]# rpm -ivh nodejs-9.11.2-1nodesource.x86_64.rpm
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第12张图片

#打开网络在主机上进行地址伪装和路由转换
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第13张图片

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第14张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第15张图片
在这里插入图片描述
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第16张图片

[root@server1 ~]# cd elasticsearch-head-master/  
[root@server1 elasticsearch-head-master]# npm install  #npm进行下载,`注意路径`,有可能会出现报错,一定要注意你的taoba镜像的路径设置

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第17张图片
[root@server1 ~]# tar jxf phantomjs-2.1.1-linux-x86_64

[root@server1 phantomjs-2.1.1-linux-x86_64]# ls
[root@server1 phantomjs-2.1.1-linux-x86_64]# cd bin/
[root@server1 bin]# cp phantomjs /usr/local/bin/ #将脚本启动文件存放在 /usr/local/bin/
在这里插入图片描述
[root@server1 elasticsearch-head-master]# yum install -y libfontconfig.so.1
[root@server1 elasticsearch-head-master]# yum install -y fontconfig #注意下载64位的
[root@server1 elasticsearch-head-master]# phantomjs
phantomjs>

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第18张图片
在这里插入图片描述
[root@server1 elasticsearch-head-master]# node -v
v9.11.2
[root@server1 elasticsearch-head-master]# npm -v
5.6.0
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第19张图片
在这里插入图片描述
在这里插入图片描述

[root@server1 elasticsearch-head-master]# npm run start &
[root@server1 elasticsearch-head-master]# netstat -antlp | grep 9100

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第20张图片

在这里插入图片描述

#在浏览器上测试,输入:172.25.8.1.9100 es:http://172.25.8.1:9200
在这里插入图片描述
#无显示 是因为存在es跨域的问题

[root@server1 elasticsearch-head-master]# vim  /etc/elasticsearch/elasticsearch.yml
 63 http.cors.enabled: true
 64 http.cors.allow-origin: "*"  #允许所有的

跨域资源共享(CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器  让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。当一个资源从与该资源本身所在的服务器不同的域、协议或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第21张图片
在这里插入图片描述

[root@server1 ~]# systemctl restart elasticsearch.service 
[root@server1 ~]# cat /var/log/elasticsearch/my-es.log  #查看日志

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第22张图片
#在浏览器上再次测试,会出现server1的服务;
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第23张图片
在这里插入图片描述

#查看文件发现是9100端口
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第24张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第25张图片
#在浏览器上再次测试,再次点击图中my-es的连接
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第26张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第27张图片

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第28张图片
#将jdk和es的rpm包发送给server2和server3

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第29张图片

server2(node1)环境部署

[root@server2 ~]# ls
elasticsearch-6.6.1.rpm   jdk-8u171-linux-x64.rpm   #这些安装包是我提前下载好的
[root@server2 ~]# rpm -ivh jdk-8u171-linux-x64.rpm  #安装jdk
[root@server2 ~]# rpm -ivh elasticsearch-6.6.1.rpm #安装es

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第30张图片
在这里插入图片描述

[root@server2 elasticsearch]# vim /etc/security/limits.conf 
 62 elasticsearch soft memlock unlimited
 63 elasticsearch hard memlock unlimited
 65 elasticsearch - nofile 65535  #打开最大文件数
 66 elasticsearch - nproc 4096 #打开最大进程
 [root@server2 elasticsearch-head-master]# vim  /etc/elasticsearch/elasticsearch.yml
  17 cluster.name: my-es  #集群名称
 23 node.name: server2    #节点主机名称
 35 path.data: /var/lib/elasticsearch  #数据路径
 39 path.logs: /var/log/elasticsearch  #日志路径
 45 bootstrap.memory_lock: true  
 57 network.host: 172.25.8.2
 61 http.port: 9200
 101 discovery.zen.ping.unicast.hosts:["server1","server2","server3"]

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第31张图片

[root@server2 elasticsearch]# vim /usr/lib/systemd/system/elasticsearch.service
 39 LimitMEMLOCK=infinity

在这里插入图片描述
#重启服务
[root@server2 conf.d]# systemctl daemon-reload
[root@server2 conf.d]# systemctl start elasticsearch.service

在这里插入图片描述
#浏览器再次测试,输入ip:port:172.25.8.1:9100,在es处输入:http://172.25.8.1:9200 再次刷新,会出现server2的服务
在这里插入图片描述
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第32张图片

server3(node2节点)环境部署,和server2类似

[root@server1 ~]# scp   jdk-8u171-linux-x64.rpm  elasticsearch-6.6.1.rpm server3:   #将这两个包发送给server3
[root@server3 ~]# ls
elasticsearch-6.6.1.rpm   jdk-8u171-linux-x64.rpm   #这些安装包是我提前下载好的
[root@server3 ~]# rpm -ivh jdk-8u171-linux-x64.rpm  #安装jdk
[root@server3 ~]# rpm -ivh elasticsearch-6.6.1.rpm #安装es
[root@server2 elasticsearch]# vim /etc/security/limits.conf 
 62 elasticsearch soft memlock unlimited
 63 elasticsearch hard memlock unlimited
 65 elasticsearch - nofile 65535  #打开最大文件数
 66 elasticsearch - nproc 4096 #打开最大进程
 [root@server2 elasticsearch-head-master]# vim  /etc/elasticsearch/elasticsearch.yml
  17 cluster.name: my-es  #集群名称
 23 node.name: server3    #节点主机名称
 35 path.data: /var/lib/elasticsearch  #数据路径
 39 path.logs: /var/log/elasticsearch  #日志路径
 45 bootstrap.memory_lock: true  
 57 network.host: 172.25.8.3
 61 http.port: 9200
 101 discovery.zen.ping.unicast.hosts:["server1","server2","server3"]

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第33张图片

[root@server2 elasticsearch]# vim /usr/lib/systemd/system/elasticsearch.service
 39 LimitMEMLOCK=infinity

在这里插入图片描述
#重启服务

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

[root@server3 elasticsearch]# cat /var/log/elasticsearch/my-es.log#查看es的日志

#再次浏览器测试:连接刷新
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第34张图片

#修改server1的配置文件

[root@server1 elasticsearch-head-master]# vim  /etc/elasticsearch/elasticsearch.yml
node.master:true   #表示节点是否具有成为主节点的资格。  
 ==[注意:此属性的值为true,并不意味着这个节点就是主节点。因为真正的主节点,是由多个具有主节点资格的节点进行选举产生的。所以,这个属性只是代表这个节点是不是具有主节点选举资格]==
 但是该实验指任server1是作为es集群的主节点
node.data:false    #节点是否存储数据。

bootstrap.memory_lock:true 
[root@server1 elasticsearch-head-master]# systemctl restart elasticsearch  #重启服务

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第35张图片
在这里插入图片描述
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第36张图片

#修改server2的配置文件

[root@server2 elasticsearch-head-master]# vim  /etc/elasticsearch/elasticsearch.yml
node.master:fasle   #表示节点是否具有成为主节点的资格。 
node.data:true
[root@server2 elasticsearch-head-master]# systemctl restart elasticsearch  #重启服务

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第37张图片

#修改server3的配置文件

[root@server3 elasticsearch-head-master]# vim  /etc/elasticsearch/elasticsearch.yml
node.master:fasle   #表示节点是否具有成为主节点的资格。 
node.data:true
[root@server3 elasticsearch-head-master]# systemctl restart elasticsearch  #重启服务

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第38张图片
#在浏览器上会发现数据的server1上数据不存在
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第39张图片

logstash:数据采集

#在server2上进行数据的采集;
主要的使用过程:hosts->logstash(input filter(过滤) output)->发送给es-->es->kibana(在web页面进行呈现)

[root@server2 ~]# ls
elasticsearch-6.6.1.rpm   jdk-8u171-linux-x64.rpm    logstash-6.6.1.rpm
[root@server2 ~]#  rpm -ivh    logstash-6.6.1.rpm
[root@server2 ~]#  systemctl start logstash  #启动服务
[root@server2 ~]#  cd /etc/logstash/conf.d/
[root@server2 conf.d]# 

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第40张图片

[root@server2 conf.d]#  rpm -ql logstash | less
[root@server2 conf.d]#  /usr/share/logstash/bin/logstash -e 'input {  stdin{} } output { stdout{}}'   #进行安装测试:

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第41张图片
#随便输入内容即可
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第42张图片

[root@server2 conf.d]#  pwd
 /etc/logstash/conf.d/

作为系统服务启动测试:默认加载的配置文件为 /etc/logstash/logstash.yml 中的 path.config 配置路径 /etc/logstash/conf.d/*.conf

[root@server2 conf.d]# vim test.conf   #自己根据自己需求编写测试
 input {  
 			stdin{}   #stdin是标准输入,一般指键盘输入到缓冲区里的东西。 
} 
output { 
			stdout{} #stdout是标准输出
}
[root@server2 conf.d]#  /usr/share/logstash/bin/logstash   -f  /etc/logstash/conf.d/ test.conf

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第43张图片
在这里插入图片描述
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第44张图片
#手动输入,进行数据采集,将数据发送server1(es),在server1上进行呈现

[root@server2 conf.d]# vim test.conf #自己根据自己需求编写测试
input {
stdin{} #stdin是标准输入,
}
output {
stdout{} #stdout是标准输出
elasticsearch {
hosts => “172.25.8.1:9200” #指定es主机,server1是主节点,也是es
index => “logstash-%{+YYYY.MM.dd}” #索引名称
}

}
[root@server2 conf.d]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/ test.conf
在这里插入图片描述
#手动随机输入
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第45张图片
#在浏览器上进行再次测试:
在这里插入图片描述
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第46张图片
在server2上再次输入redhat,在浏览器上会发现生成新的数据
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第47张图片
#保存数据到文件中

[root@server2 conf.d]# vim test.conf   #自己根据自己需求编写测试
 input {  
 			stdin{}   #stdin是标准输入, 
} 
output { 
			stdout{} #stdout是标准输出
			elasticsearch {
							hosts => "172.25.8.1:9200"   #指定es主机,server1是主节点,也是es
							index => "logstash-%{+YYYY.MM.dd}" #索引名称
		   }
		   file {
					path => " /tmp/logstash.txt"  #文件格式无所谓
					codec => line { format => "custom format : %{message}"}
			}
			
}
[root@server2 conf.d]#  /usr/share/logstash/bin/logstash   -f  /etc/logstash/conf.d/ test.conf

在这里插入图片描述
#随便输入数据

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第48张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第49张图片
在这里插入图片描述
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第50张图片

#file 从日志文件中读取,进行采集,然后自动读取;

[root@server2 conf.d]# vim test.conf 
input {
        file {
                               path => "/var/log/messages"
                				start_position => "beginning"
        }
}

output {
        stdout{}
        elasticsearch {
                hosts => "172.25.8.1:9200"
                index => "messages-%{+YYYY.MM.dd}"
        }
}
[root@server2 conf.d]#  /usr/share/logstash/bin/logstash   -f  /etc/logstash/conf.d/ test.conf

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第51张图片
在这里插入图片描述
#自动读取,不需要手动输入
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第52张图片
#在浏览器上进行再次连接刷新:
在这里插入图片描述
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第53张图片
在这里插入图片描述
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第54张图片
#删除messages数据收集的信息,然后进行再次测试
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第55张图片
#删除成功,但是再次测试的话,还需要删除配置文件中的真正的数据,否则收集的还是原先的数据
在这里插入图片描述
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第56张图片


[root@server2 conf.d]# cd   /usr/share/logstash/
[root@server2 logstash]# cd data/plugins/inputs/file/
[root@server2 file]# ls

   

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第57张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第58张图片ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第59张图片
在这里插入图片描述
#再次测试
在这里插入图片描述ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第60张图片
#从514端口进行采集,采集server1上的数据

[root@server2 conf.d]# vim test.conf 
input {
#        file {
#                              path => "/var/log/messages"
#              				start_position => "beginning"
#        }
}
		  syslog {
 				port => 514
 }
		  
output {
        stdout{}
        elasticsearch {
                hosts => "172.25.8.1:9200"
                index => "syslog-%{+YYYY.MM.dd}"
        }
#		   file {
#					path => " /tmp/logstash.txt"  #文件格式无所谓
#		    		codec => line { format => "custom format : %{message}"}
#			}
}
[root@server2 conf.d]#  /usr/share/logstash/bin/logstash   -f  /etc/logstash/conf.d/test.conf   #不能关闭,保持测试打开的状态

在这里插入图片描述
#修改server1的采集数据的端口

[root@servre1 etc] vim /etc/rsyslog.conf
#倒数第二行
*.* @@172.25.8.2:514
[root@servre1 etc]# systemctl restart rsyslog
[root@servre1 etc]# logger westos
[root@servre1 etc]# logger hello

在这里插入图片描述
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第61张图片
#server2的显示
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第62张图片
#查看server2上514端口,server1是否对server2打开
在这里插入图片描述
#在浏览器上查看
在这里插入图片描述
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第63张图片

在这里插入图片描述

EOF是END Of File的缩写,表示自定义终止符.既然自定义,那么EOF就不是固定的,可以随意设置别名,在linux按ctrl-d就代表EOF.
EOF一般会配合cat能够多行文本输出.
通过cat配合重定向能够生成文件并追加操作,;

#多行录入EOF结束输入

[root@server2 conf.d]# vim es.conf 
input {
	stdin {
		codec => multiline {
			pattern => "EOF"  #输入重定向
			negate => "true"
			what => "previous"
		}
	}
output {
	stdout{}
}

}
[root@server2 conf.d]#  /usr/share/logstash/bin/logstash   -f  /etc/logstash/conf.d/es.conf 

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第64张图片
在这里插入图片描述
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第65张图片
#多行收集server2上的my-es.log日志数据;

[root@server2 conf.d]# vim test.conf 
input {
        file {
                      path => "/var/log/elasticsearch/my-es.log"
              		   start_position => "beginning"
              		   codec => multiline {
								pattern => "^\["  #查找以[开头的数据
								negate => "true"
								what => "previous"
						}
        }
}

output {
        stdout{}
        elasticsearch {
                hosts => "172.25.8.1:9200"
                index => "es-%{+YYYY.MM.dd}"
        }
[root@server2 conf.d]#  /usr/share/logstash/bin/logstash   -f  /etc/logstash/conf.d/es.conf 

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第66张图片
在这里插入图片描述
#查看浏览器
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第67张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第68张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第69张图片
#采集apache日志数据

[root@server2 ~] #  yum install httpd -y
[root@server2 ~] # systemctl start httpd
[root@server2 ~]# cd /var/www/html/
[root@server2 html]# cat index.html

www.westos.org

#在server1上进行测试:
在这里插入图片描述
[root@foundation8 Desktop]# ab -c 1 -n 100 http://172.25.8.2/index.html #物理机对server2进行压力测试;

ab(apache bench)是apache下的一个工具,主要用于对web站点做压力测试,
基础用法: 其中-c选项为一次发送的请求数量,及并发量。 -n选项为请求次数。

[root@server2 conf.d]# cat /var/log/httpd/access_log #查看登陆日志信息

在这里插入图片描述
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第70张图片

[root@server2 conf.d]# pwd
/etc/logstash/conf.d
[root@server2 conf.d]# vim apache.conf 
input {
        file {
                path => "/var/log/httpd/access_log"    #查看的文件路径
                start_position => "beginning"
        }
#       syslog {
#               port => 514
#       }
}

output {
        stdout{}
        elasticsearch {
                hosts => "172.25.8.1:9200"
                index => "apache-%{+YYYY.MM.dd}"
        }

#       file {
#               path =>  "/tmp/logstash.txt"
#               codec => line { format => "custom format: %{message}" }
#       }
}
[root@server2 conf.d]# /usr/share/logstash/bin/logstash   -f  /etc/logstash/conf.d/ test.conf

在这里插入图片描述
#查看浏览器测试
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第71张图片

#在这里我们发现有个问题,就是还有个问题就是过滤,那么需要匹配的正则模式
#举一反三,我们尝试输出一下/var/log/httpd/access_log字段的时间信息。
这个时候我们可以去找匹配的正则有哪些,要去这个路径下找:/usr/share/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns目录下的grok-patterns这个文件;
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第72张图片

#grok匹配进行过滤fifter,可以采集需要内容

[root@server2 patterns]# cd /etc/logstash/conf.d/
[root@server2 conf.d]# vim grok.conf 
input {
        stdin{}
}
filter {
        grok{
                match => {"message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}"}
        }
}
output{
        stdout{}

}

[root@server2 conf.d]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/grok.conf   #启动logstash

55.3.244.1 GET /index.html 15824 0.043

在这里插入图片描述
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第73张图片

ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台

#该实验是在以上的实验基础上,进行了logstash收集apache的日志信息发送给es传到kibana

[root@server2 conf.d]# pwd
/etc/logstash/conf.d
[root@server2 conf.d]# vim apache.conf 
input {
        file {
                path => "/var/log/httpd/access_log"    #日志登陆文件路径
                start_position => "beginning"
        }
#       syslog {
#               port => 514
#       }
}
filter {        #过滤的出HTTPD_COMBINEDLOG
       grok{
                match => {"message" => "%{HTTPD_COMBINEDLOG}"}
        }
}

output {
        stdout{}
        elasticsearch {
                hosts => "172.25.8.1:9200"
                index => "apache-%{+YYYY.MM.dd}"
        }

#       file {
#               path =>  "/tmp/logstash.txt"
#               codec => line { format => "custom format: %{message}" }
#       }
}
[root@server2 conf.d]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/apache.conf  #启动logstash ,将其发送给es,然后传至kibana,切忌不要关闭logstash的启动服务

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第74张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第75张图片

#删除之前收集apache的信息,以及配置文件中的信息
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第76张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第77张图片
#server2上的收集apache日志信息 的启动logstash服务必须保证在启动的状态
在这里插入图片描述
##在server3上添加kibana服务

[root@server3 ~]# ls
elasticsearch-6.6.1.rpm  kibana-6.6.1-x86_64.rpm
jdk-8u171-linux-x64.rpm  Kibana_Hanization-master.zip
[root@server3 ~]# rpm -ivh kibana-6.6.1-x86_64.rpm 
[root@server3 ~]# cd /etc/kibana/
[root@server3 kibana]# ls
[root@server3 kibana]# vim kibana.yml 
2 server.port: 5601
7 server.host: "172.25.8.3"     #将server设置成本机
28 elasticsearch.hosts: ["http://172.25.8.1:9200"]     #将es的设置成的hosts
37 kibana.index: ".kibana"    #kibana的信息收集的名称为.kibana

[root@server3 kibana]# systemctl start kibana.service 

在这里插入图片描述

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第78张图片
在这里插入图片描述
在这里插入图片描述

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第79张图片
#将Kibana进行汉化

[root@server3 ~]# ls
elasticsearch-6.6.1.rpm  kibana-6.6.1-x86_64.rpm
jdk-8u171-linux-x64.rpm  Kibana_Hanization-master.zip  #这个包也可以在github上面download  ,#这里这个包是6.6的包,因为kibana服务使用的就是6.6的版本
[kibana的汉化包的github的地址](https://github.com/anbai-inc/Kibana_Hanization)
[root@server3 ~]# yum install -y unzip
[root@server3 ~]# unzip Kibana_Hanization-master.zip   #将其汉化包进行解压
[root@server3 ~]# ls
elasticsearch-6.6.1.rpm  Kibana_Hanization-master
jdk-8u171-linux-x64.rpm  Kibana_Hanization-master.zip
kibana-6.6.1-x86_64.rpm
[root@server3 Kibana_Hanization-master]# cp -r translations/ /usr/share/kibana/src/legacy/core_plugins/kibana/
[root@server3 Kibana_Hanization-master]# vim  /etc/kibana/kibana.yml 
113 i18n.locale: "zh-CN" #汉化kibana
[root@server3 Kibana_Hanization-master]# systemctl start kibana

在这里插入图片描述
在这里插入图片描述
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第80张图片

#server2的启动服务一定要保持不变
在这里插入图片描述
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第81张图片

#查看server3的5601的端口是否打开
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第82张图片
#在物理机上对server2进行压力测试
[root@foundation8 Desktop]# ab -c 1 -n 1200 http://172.25.8.2/index.html
在这里插入图片描述

#server1对server2进行访问,以及压力测试

[root@server1 elasticsearch-head-master]# cd
[root@server1 ~]# yum install -y httpd-tools  #安装apache,压力测试的命令
[root@server1 ~]# curl 172.25.8.2  #访问server2

www.westos.org

[root@server1 ~]# ab -c 1 -n 1200 http://172.25.8.2/index.html #sever1对server2进行压力测试

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

#server3对server2进行访问,以及压力测试

[root@server3 kibana]# curl 172.25.8.2

www.westos.org

[root@server3 kibana]# curl 172.25.8.2

www.westos.org

[root@server3 kibana]# yum install -y httpd-tools #安装apache,压力测试的命令 [root@server3 kibana]# b -c 1 -n 400 http://172.25.8.2/index.html

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

简单介绍一下kibana

Kibana定义:(一张图片胜过千万行日志)

Kibana是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作。
你用Kibana来搜索,查看,并和存储在Elasticsearch索引中的数据进行交互。
你可以轻松地执行高级数据分析,并且以各种图标、表格和地图的形式可视化数据。
Kibana使得理解大量数据变得很容易。它简单的、基于浏览器的界面使你能够快速创建和共享动态仪表板,实时显示Elasticsearch查询的变化。

Kibana 的使用场景,应该集中在两方面:
实时监控

通过 histogram 面板,配合不同条件的多个 queries 可以对一个事件走很多个维度组合出不同的时间序列走势。时间序列数据是最常见的监控报警了。

问题分析

关于 elk 的用途,可以参照其对应的商业产品 splunk 的场景:使用 Splunk 的意义在于使信息收集和处理智能化。而其操作智能化表现在:

搜索,通过下钻数据排查问题,通过分析根本原因来解决问题;
实时可见性,可以将对系统的检测和警报结合在一起,便于跟踪 SLA 和性能问题;
历史分析,可以从中找出趋势和历史模式,行为基线和阈值,生成一致性报告。

#在浏览器上编辑server3的kibana服务
#(1)访问kibana服务:在浏览器上输入ip :172.25.8.3:5601(输入安装kibana服务主机的ip:5601)

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第83张图片

#(2)
当访问Kibana时,默认情况下,Discover页面加载时选择了默认索引模式。时间过滤器设置为最近15分钟,搜索查询设置为match-all(*)

第二次访问的时候,选择左边的管理,在点击索引模式;
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第84张图片

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第85张图片

#(3)用Elasticsearch连接到Kibana
在你开始用Kibana之前,你需要告诉Kibana你想探索哪个Elasticsearch索引。第一次访问Kibana是,系统会提示你定义一个索引模式以匹配一个或多个索引的名字。

(提示:默认情况下,Kibana连接允许在localhost上的Elasticsearch实例。为了连接到一个不同的Elasticsearch实例,修改kabana.yml中Elasticsearch的URL,然后重启Kibana。)(这个在之前已经做过了)

为了配置你想要用Kibana访问的Elasticsearch索引:
 1、访问Kibana UI。例如,localhost:56011 或者 http://YOURDOMAIN.com:5601
2、指定一个索引模式来匹配一个或多个你的Elasticsearch索引。当你指定了你的索引模式以后,任何匹配到的索引都将被展示出来。
  (画外音:*匹配0个或多个字符; 指定索引默认是为了匹配索引,确切的说是匹配索引名字)
 3、点击“Next Step”以选择你想要用来执行基于时间比较的包含timestamp字段的索引。如果你的索引没有基于时间的数据,那么选择“I don’t want to use the Time Filter”选项。
 4、点击“Create index pattern”按钮来添加索引模式。第一个索引模式自动配置为默认的索引默认,以后当你有多个索引模式的时候,你就可以选择将哪一个设为默认。(提示:Management > Index Patterns)

开始创建索引模式,
本次kibanna的实验是在监控apache的服务,所以在索引模式的第一栏输入:apache-*,然后点击下一步
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第86张图片

#(4)选择时间筛选字段名称:@timestamp,点击创建索引模式
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第87张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第88张图片
#(5)点击左边可视化,开始创建可视化
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第89张图片
#(6)选择“指标“可视化
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第90张图片
#(7)点击apache-*
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第91张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第92张图片
#(8)添加指标,注意右上角选择为today,因为默认的是15分钟内的;
#上物理机和server1和server3对server2的访问测试总共2803次,显示成功

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第93张图片

#(9) 单击上述菜单栏中的 保存按钮,然后输入该实验的名称,比如,本实验为命名为apache的总访问量,将该实验保存在可视化中,
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第94张图片
#(10)添加仪表板, 单击上述菜单栏中的添加 按钮,以将可视化添加到仪表板。

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第95张图片

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第96张图片

#(11)点击apache的总访问量,即可添加成功

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第97张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第98张图片
#(12)单击上述菜单栏中的保存 按钮,编辑仪表板的名称,该实验为web站点状态
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第99张图片
#(13)保存完之后,单击上述菜单栏中的全屏 按钮,可以看起来更加方便
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第100张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第101张图片

#(14)物理机继续向server2中进行压力测试
[root@foundation8 Desktop]# ab -c 1 -n 200 http://172.25.8.2/index.html

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第102张图片
#(15)回到kibana的浏览器,点击kibana的最右侧有个Refresh按钮,进行刷新,发现apache的访问量变成了3002,实验成功
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第103张图片
#(17)server1和server3都向server2继续进行压力测试
[root@server1 ~]# ab -c 1 -n 100 http://172.25.8.2/index.html
[root@server3 kibana]# ab -c 1 -n 100 http://172.25.8.2/index.html
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第104张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第105张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第106张图片
#(17)点击菜单栏的 Visualize,再点击“+“,创建新的可视化界面,点击垂直条形图,再点击apache-*
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第107张图片ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第108张图片

ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第109张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第110张图片
#(18)左下角有个存储桶,设置x轴的存储桶,并且暂停服务,才会显示垂直条形图,否则会一直显示全部的;
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第111张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第112张图片
#(19)点击菜单栏的保存按钮,编辑可视化名称:apache的排行榜
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第113张图片

#(20)编辑仪表板,点击菜单栏的 添加 按钮,点击apache的排行榜,
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第114张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第115张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第116张图片
(21)点击菜单栏的保存按钮,确认保存,成功添加到web站点状态
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第117张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第118张图片

#注意apache日志的权限
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第119张图片
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第120张图片
#(22)继续向sever2中进行压力测试
[root@foundation8 Desktop]# ab -c 1 -n 200 http://172.25.8.2/index.html
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第121张图片
#(23)查看es浏览器,发现apache的服务数据发生了变化
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第122张图片
#(24)刷新kibana的服务,压力测试成功
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第123张图片

kibanac报错知识点

#如果出现Kibana server is not ready yet这种报错的原因,有以下几种情况:
ELK(4)——环境部署及ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台_第124张图片
第一点:KB、ES版本不一致(网上大部分都是这么说的)

解决方法:把KB和ES版本调整为统一版本

第二点:kibana.yml中配置有问题(通过查看日志vim /var/log/message,发现了Error: No Living connections的问题)

解决方法:将配置文件kibana.yml中的elasticsearch.url改为正确的链接,默认为: http://elasticsearch:9200

改为http://自己的IP地址:9200

第三点:浏览器没有缓过来,清除缓存,继续刷新;

解决方法:刷新几次浏览器。

内存有很多的冗余,为什么不能建立文件?
因为inode号被封;inode号是指针,指向底层的磁盘数据;释放了inode号即可;

/usr、/home、/bin、/dev、/var、/etc中主要存放什么文件

/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含:
/usr/X11R6 存放X window的目录
/usr/bin 众多的应用程序
/usr/sbin 超级用户的一些管理程序
/usr/doc linux文档
/usr/include linux下开发和编译应用程序所需要的头文件
/usr/lib 常用的动态链接库和软件包的配置文件
/usr/man 帮助文档
/usr/src 源代码,linux内核的源代码就放在/usr/src/linux里
/usr/local/bin 本地增加的命令
/usr/local/lib 本地增加的库
/home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示
/bin 二进制可执行命令
/dev 设备特殊文件
/var 某些大文件的溢出区,比方说各种服务的日志文件
/etc 系统管理和配置文件
/etc/rc.d 启动的配置文件和脚本

你可能感兴趣的:(Linux运维进阶)