图文详解搭建 ELK+EFK 日志分析系统

目录

  • 一、配置 ELK 日志分析系统
    • 1. 拓扑图
    • 2. 环境配置
    • 3. 安装 Elasticsearch(node1和node2)
    • 4. 安装 elasticsearch-head 插件
    • 5. 安装 logstash
    • 6. 安装 kibana (node1)
    • 7. 验证结果
  • 二、配置 EFK 日志分析系统
    • 1. EFK 简介
    • 2. 环境部署
    • 3. 安装 Elasticsearch(node1和node2)
    • 4. 安装 elasticsearch-head 插件
    • 5. 安装配置 Tomcat
    • 6. 安装 filebeat
    • 7. 安装 kibana (node1)
    • 8. 验证结果
  • 总结


一、配置 ELK 日志分析系统

1. 拓扑图

图文详解搭建 ELK+EFK 日志分析系统_第1张图片

  • 配置和安装 ELK 日志分析系统,安装集群方式,2个 elasticsearch节点, 并监控 tomcat 服务器日志
主机 操作系统 IP地址 主要软件
Node1 Centos7.4 192. 168.8.15 Elasticsearch、Kibana
Node2 Centos7.4 192.168.8.16 Elasticsearch
apache Centos7.4 192.168.8.17 Logstash

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

图文详解搭建 ELK+EFK 日志分析系统_第2张图片
图文详解搭建 ELK+EFK 日志分析系统_第3张图片

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

图文详解搭建 ELK+EFK 日志分析系统_第4张图片

  • node2 节点主配置文件需把节点名改为node2
    图文详解搭建 ELK+EFK 日志分析系统_第5张图片

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

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

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

图文详解搭建 ELK+EFK 日志分析系统_第6张图片
图文详解搭建 ELK+EFK 日志分析系统_第7张图片

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

图文详解搭建 ELK+EFK 日志分析系统_第8张图片
图文详解搭建 ELK+EFK 日志分析系统_第9张图片

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

图文详解搭建 ELK+EFK 日志分析系统_第10张图片

图文详解搭建 ELK+EFK 日志分析系统_第11张图片

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

图文详解搭建 ELK+EFK 日志分析系统_第12张图片

图文详解搭建 ELK+EFK 日志分析系统_第13张图片

  • ④ 修改主配置文件
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'

图文详解搭建 ELK+EFK 日志分析系统_第14张图片
图文详解搭建 ELK+EFK 日志分析系统_第15张图片

  • 用浏览器打开测试

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

图文详解搭建 ELK+EFK 日志分析系统_第16张图片
图文详解搭建 ELK+EFK 日志分析系统_第17张图片

  • 在 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"}'

图文详解搭建 ELK+EFK 日志分析系统_第18张图片

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

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

图文详解搭建 ELK+EFK 日志分析系统_第19张图片
图文详解搭建 ELK+EFK 日志分析系统_第20张图片

5. 安装 logstash

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

图文详解搭建 ELK+EFK 日志分析系统_第21张图片

  • ① 安装 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/

图文详解搭建 ELK+EFK 日志分析系统_第22张图片

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

#输入内容
www.baidu.com		

图文详解搭建 ELK+EFK 日志分析系统_第23张图片

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

图文详解搭建 ELK+EFK 日志分析系统_第24张图片

  • ④ 使用浏览器访问 http://192.168.8.15:9100/ ,查看索引信息
    图文详解搭建 ELK+EFK 日志分析系统_第25张图片

图文详解搭建 ELK+EFK 日志分析系统_第26张图片

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

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

图文详解搭建 ELK+EFK 日志分析系统_第27张图片

#配置文件中定义的是收集系统日志(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/ 查看索引信息

图文详解搭建 ELK+EFK 日志分析系统_第28张图片

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

图文详解搭建 ELK+EFK 日志分析系统_第29张图片

7. 验证结果

  • ② 浏览器访问 192.168.8.15:5601

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

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

图文详解搭建 ELK+EFK 日志分析系统_第30张图片

图文详解搭建 ELK+EFK 日志分析系统_第31张图片

  • ③ 对接 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-"的索引

图文详解搭建 ELK+EFK 日志分析系统_第32张图片
图文详解搭建 ELK+EFK 日志分析系统_第33张图片

图文详解搭建 ELK+EFK 日志分析系统_第34张图片
图文详解搭建 ELK+EFK 日志分析系统_第35张图片
图文详解搭建 ELK+EFK 日志分析系统_第36张图片

二、配置 EFK 日志分析系统

1. EFK 简介

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

  • EFK 和 ELK 区别:

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

2. 环境部署

  • 拓扑图

图文详解搭建 ELK+EFK 日志分析系统_第37张图片

主机 操作系统 IP地址 主要软件
Node1 Centos7.4 192. 168.8.15 Elasticsearch、Kibana
Node2 Centos7.4 192.168.8.16 Elasticsearch
tomcat Centos7.4 192.168.8.17 filebeat、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

图文详解搭建 ELK+EFK 日志分析系统_第38张图片
图文详解搭建 ELK+EFK 日志分析系统_第39张图片

#安装包放到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

图文详解搭建 ELK+EFK 日志分析系统_第40张图片

  • node2 节点主配置文件需把节点名改为node2
    图文详解搭建 ELK+EFK 日志分析系统_第41张图片

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

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

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

图文详解搭建 ELK+EFK 日志分析系统_第42张图片
图文详解搭建 ELK+EFK 日志分析系统_第43张图片

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

图文详解搭建 ELK+EFK 日志分析系统_第44张图片
图文详解搭建 ELK+EFK 日志分析系统_第45张图片

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

图文详解搭建 ELK+EFK 日志分析系统_第46张图片

图文详解搭建 ELK+EFK 日志分析系统_第47张图片

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

图文详解搭建 ELK+EFK 日志分析系统_第48张图片

图文详解搭建 ELK+EFK 日志分析系统_第49张图片

  • ④ 修改主配置文件
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'

图文详解搭建 ELK+EFK 日志分析系统_第50张图片
图文详解搭建 ELK+EFK 日志分析系统_第51张图片

  • 用浏览器打开测试

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

图文详解搭建 ELK+EFK 日志分析系统_第52张图片
图文详解搭建 ELK+EFK 日志分析系统_第53张图片

  • 在 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"}'

图文详解搭建 ELK+EFK 日志分析系统_第54张图片

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

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

图文详解搭建 ELK+EFK 日志分析系统_第55张图片
图文详解搭建 ELK+EFK 日志分析系统_第56张图片

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     		  		#转移包位置并改名

图文详解搭建 ELK+EFK 日志分析系统_第57张图片

  • 创建软连接,优化开启命令,便于管理
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

图文详解搭建 ELK+EFK 日志分析系统_第58张图片

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

图文详解搭建 ELK+EFK 日志分析系统_第59张图片

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

图文详解搭建 ELK+EFK 日志分析系统_第60张图片

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

图文详解搭建 ELK+EFK 日志分析系统_第61张图片

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

图文详解搭建 ELK+EFK 日志分析系统_第62张图片

8. 验证结果

  • 使用浏览器访问 192.168.8.15:5601
    图文详解搭建 ELK+EFK 日志分析系统_第63张图片

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

图文详解搭建 ELK+EFK 日志分析系统_第64张图片

总结

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

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

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

你可能感兴趣的:(Web,服务器群集,redis,mysql,缓存,elk)