操作系统linux安装jdk rpm安装
ip 地址软件centos6.9
10.104.34.101filebeat6.2.4centos6.8
10.135.67.165Logstash6.2.4centos6.8
10.135.67.165Elasticsearch6.2.4centos6.810.135.173.165Kibana6.2.4Filebeat+ELK 部署⽂档
在⽇常运维⼯作中,对于系统和业务⽇志的处理尤为重要。今天,在这⾥分享⼀下⾃⼰部署的Filebeat+ELK 开源实时⽇志分析平台的记录过程,有不对的地⽅还望指出。
简单介绍:
⽇志主要包括系统⽇志、应⽤程序⽇志和安全⽇志。系统运维和开发⼈员可以通过⽇志了解服务器软硬件信息、检查配置过程中的错误及错误发⽣的原因。经常分析⽇志可以了解服务器的负荷,性能安全性,从⽽及时采取措施纠正错误。
通常,⽇志被分散的储存不同的设备上。如果你管理数⼗上百台服务器,你还在使⽤依次登录每台机器的
传统⽅法查阅⽇志。这样是不是感觉很繁琐和效率低下。当务之急我们使⽤集中化的⽇志管理,例如:开源的syslog ,将所有服务器上的⽇志收集汇总。
集中化管理⽇志后,⽇志的统计和检索⼜成为⼀件⽐较⿇烦的事情,⼀般我们使⽤grep 、awk 和wc 等Linux 命令能实现检索和统计,但是对于要求更⾼的查询、排序和统计等要求和庞⼤的机器数量依然使⽤这样的⽅法难免有点⼒不从⼼。
Filebeat+ELK 是四个开源⼯具组成,简单解释如下:
Filebeat :ELK 协议栈的新成员,⼀个轻量级开源⽇志⽂件数据搜集器,基于 Logstash-Forwarder 源代码开发,是对它的替代。在需要采集⽇志数据的 server 上安装 Filebeat ,并指定⽇志⽬录或⽇志⽂件后,Filebeat 就能读取数据,迅速发送到 Logstash 进⾏解析,亦或直接发送到 Elasticsearch 进⾏集中式存储和分析。
Elasticsearch :是个开源分布式搜索引擎,它的特点有:分布式,零配置,⾃动发现,索引⾃动分⽚,索引副本机制,restful 风格接⼝,多数据源,⾃动搜索负载等。
Logstash :是⼀个完全开源的⼯具,它可以对你的⽇志进⾏收集、过滤,并将其存储供以后使⽤(如,搜索)。
Kibana :也是⼀个开源和免费的⼯具,它可以为 Logstash 和 ElasticSearch 提供的⽇志分析友好的Web 界⾯,可以帮助您汇总、分析和搜索重要数据⽇志。
这⾥之所以⽤Filebeat+ELK 是因为Filebeat 相对于logstash ⽽⾔,更轻量级,占⽤系统资源少。
实验拓扑图
环境信息:
我这⾥把elasticsearch 和logstash 部署在同⼀台服务器上了。
安装步骤:
1、配置Java环境:(安装elasticsearch的时候需要有Java环境,jdk可以去oracle官⽅⽹站下载,版本号可以和我的不⼀样)
#rpm -ivh jdk-8u102-linux-x64.rpm
2、安装elasticsearch:
#wget -P /usr/local/src/ /downloads/elasticsearch/elasticsearch-6.2.
#cd /usr/local/src
#tar xvf elasticsearch-6.2.
#cp elasticsearch-6.2.4/l elasticsearch-6.2.4/l.default  --备份elasticsearch的默认配置⽂件,以防⽌修改时出错
<_lock: false
bootstrap.system_call_filter: false
这两⾏配置主要是为了解决之后启动elasticsearch会报检测失败的⼀个错,报错内容如下:
ERROR: bootstrap checks failed
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
原因:这是在因为Centos6不⽀持SecComp,⽽ES5.2.0版本之后默认bootstrap.system_call_filter为true进⾏检测,所以导致检测失败,失败后直接导致ES不能启动。
添加elastic⽤户,tar包启动必须使⽤普通⽤户运⾏
#useradd elastic
#chown -R elastic. /usr/local/src/elasticsearch-6.2.4
打开f⽂件,添加如下内容:
#vim /f
vm.max_map_count = 655360
#sysctl -p /f
打开/etc/f⽂件,修改打开⽂件句柄数
#vim /etc/f  --添加如下内容
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
切换到elastic普通⽤户
#su - elastic
$cd /usr/local/src/elasticsearch-6.2.4
$./bin/elasticsearch
第⼀次启动需要⼀些时间,因为需要做⼀些初始化动作,如果没启动成功请查系elasticsearch的相关⽇志解决。注意上⾯只是前台启动调试,在后台需要加&,需要重新启动。
查看端⼝是否开启:
curl简单的测试下:
3、安装logstash
#wget -P /usr/local/src /downloads/logstash/logstash-6.2.
#cd /usr/local/src/
#tar xvf logstash-6.2.
4、安装filebeat
#wget -P /usr/local/src /downloads/beats/filebeat/filebeat-6.2.4-linux-x86_
#cd /usr/local/src
#tar xvf filebeat-6.2.4-linux-x86_
#cp /usr/local/src/filebeat-6.2.l /usr/local/src/filebeat-6.2.l.default
编辑l⽂件,内容如下:
启动filebeat服务:
#cd /usr/local/src/filebeat-6.2.4
#./filebeat &  --在后台运⾏
注意:filebeat没有监听端⼝,主要看⽇志和进程,filebeat监听的⽂件记录信息在/usr/local/src/filebeat-6.2.4/data/registry⾥⾯
然后新建⼀个logstash启动指定f的配置⽂件,内容如下:
这⾥我们只配置了input和output部分,其实Logstash默认有input、filter、output三个区域,但⼀般⾄少配置input和output部分就够了,并且logstash的默认配置⽂件l我们选择不修改就⾏。
下⾯我们启动logstash,然后进⾏先进⾏简单的测试:
#cd /usr/local/src/logstash-6.2.4
#./bin/logstash -e 'input { stdin { } } output { stdout { } }' --先进⾏不指定配置⽂件测试
当我们输⼊hello world的时候,对应的下⾯也会输出
接下来指定配置⽂件f进⾏测试:
#cd /usr/local/src/logstash-6.2.4
#./bin/logstash -f f  --这⾥我们先前台启动⽅便调试,待调试成功后再后台启动
进⾏验证(ip为elasticsearch的ip)
当然我们也可以看到对应的端⼝9600和5044是开启的
5、安装kibana
#wget -P /usr/local/src /downloads/kibana/kibana-6.2.4-linux-x86_ #cd /usr/local/src
#tar xvf kibana-6.2.4-linux-x86_
#cp kibana-6.2.4-linux-x86_64/l  kibana-6.2.4-linux-x86_64/l.default 编辑kibana的配置⽂件
这⾥server.host理论上来说配置成本服务器的外⽹ip即可,但是我⽤的云服务器,配置成相应的外⽹ip在启动的时候会报⽆法分配对应的ip 地址,⾄于是什么原因我也没搞明⽩,但是配置成0.0.0.0后就可
以正常启动。
进来之后⾸先创建⼀个索引,然后输⼊Time Filter field name名字,均填完之后点击创建。
点击Discover可以看到采集的⽇志已经到kibana这⾥来了,⾄此,filebeat+elk⽇志分析系统就搭建完了,还有许多⾼级功能需不断学习。