(一)什么是ELK Stack

ELK 到底是什么呢? “ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。

  • Elasticsearch 是一个搜索和分析引擎;
  • Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中;
  • Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。

那什么又是什么是ELK Stack呢?在ELK社区发展壮大之后,又加入了一系列轻量型的单一功能数据采集器--Beats,所以Beats是一系列轻量型小工具。

ELK6环境搭建-LMLPHP

图1.Beats工具集合

在加入Beats工具之后呢,ELK 这个名称又要变了,把它叫做 BELK?BLEK?ELKB?当时的确有过继续沿用首字母缩写的想法。然而,对于扩展速度如此之快的堆栈而言,一直采用首字母缩写的确不是长久之计,就这样,Elastic Stack 这个名字应运而生了。

所以目前的ELK Stack主要是包含了Elasticsearch 、Logstash、Kibana以及Beats,四个软件形成了如下的架构:

ELK6环境搭建-LMLPHP

图2.ELK Stack架构

接下来我们通过安装ELK 6来了解ELK。

NOTE:本次安装版本为ELK6.5.4,此时ELK最新版本已经是7.9.1,不过公司使用的是6.5.4,因此安装较老的版本。

(二)基础信息

(2.1)操作系统信息

[root@elk6 ~]# cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)


(2.2)基础软件安装包

elasticsearch-6.5.4
kibana-6.5.4-linux-x86_64
filebeat-6.5.4-linux-x86_64

安装包下载,我把所有本文涉及到的安装包都放在网盘里面了:

链接:https://pan.baidu.com/s/1Dzhif5V9Rm1fgwauanf1qQ

提取码:gege

ELK6环境搭建-LMLPHP

或者也可以从有道云笔记附件下载,链接:http://note.youdao.com/noteshare?id=ab1426fe3c180a08ec540c36337616c5&sub=59BD56337C3D46B2B2F54F3FC2D44503


(2.3)安装用户及目录创建

创建安装用户elk,用户组elk

[root@elk6 ~]# groupadd elk
[root@elk6 ~]# useradd elk -g elk -p elk

创建安装目录/elk,后续会将elasticsearch、logstash、kibana安装到该目录。

[root@elk6 ~]# mkdir /elk
[root@elk6 ~]# chown -R elk:elk /elk

(三)安装ELK组件

elk stack的安装主要包括elasticsearch、kibana、logstash、filebeat等,elk还需依赖java。

(3.1)安装Java

注意:使用root用户进行安装

elasticsearch的安装至少需要java8,安装方法如下:

STEP1:到Oracle官网下载java8,建议不要使用太新的,下载地址为:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

STEP2:安装java

# 使用rpm包直接安装
[root@elk6 ~]# rpm -ivh jdk-8u261-linux-x64.rpm
warning: jdk-8u261-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:jdk1.8-2000:1.8.0_261-fcs ################################# [100%]
Unpacking JAR files...
tools.jar...
plugin.jar...
javaws.jar...
deploy.jar...
rt.jar...
jsse.jar...
charsets.jar...
localedata.jar... # 配置java的环境变量
[root@elk6 default]# vim /etc/profile
# 在rofile文件末尾添加java的环境变量
export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar # 使环境变量生效
[root@elk6 default]# source /etc/profile

STEP3:查看安装情况

[root@elk6 default]# java -version
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode) [root@elk6 default]# echo $JAVA_HOME
/usr/java/default


(3.2)安装elasticsearch

注意:使用elk用户进行安装

STEP1:解压elasticsearch安装包到/elk目录

[elk@elk6 ~]$ tar -xzvf elasticsearch-6.5.4.tar.gz -C /elk/

STEP2:查看安装包

[elk@elk6 ~]$ cd /elk/
[elk@elk6 elk]$ ll
total 0
drwxr-xr-x. 8 elk elk 143 Dec 18 2018 elasticsearch-6.5.4

STEP3:启动elasticsearch

[elk@elk6 bin]$ ./elasticsearch -d

STEP4:检查是否启动成功,如果出现如下信息,则说明启动成功

[elk@elk6 ~]$ curl 127.0.0.1:9200
{
"name" : "tif-YiB",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "igsUakpeRse6-41h7aJbiw",
"version" : {
"number" : "6.5.4",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "d2ef93d",
"build_date" : "2018-12-17T21:17:40.758843Z",
"build_snapshot" : false,
"lucene_version" : "7.5.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}

问题记录:

问题1:只能使用127.0.0.1访问elasticsearch,其它IP无法访问。

需要修改配置文件elasticsearch.yml,将其设置为不限制访问的IP

[elk@elk6 config]$ pwd
/elk/elasticsearch-6.5.4/config
[elk@elk6 config]$ vim elasticsearch.yml
network.host: 0.0.0.0

重启后报错:

ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

修改Linux用户资源参数

vim /etc/security/limits.conf
# 在最后面添加以下参数
* soft nofile 65536
* hard nofile 65536

修改内核控制参数

vim /etc/sysctl.conf
# 在最后面添加以下参数
vm.max_map_count=655360

使内核参数生效

sysctl -p

然后退出elk用户,再次登录启用新的参数即可正常启动。

问题2:elk默认无法使用root用户执行

如果以root执行,会出现无法启动,后续再以elk用户执行,也启动不了,需要重新授权。

[root@elkserver ~]# cd /elk/
[root@elkserver elk]# ls -l
total 4
drwxr-xr-x. 5 elk elk 57 Nov 15 17:22 elasticsearch
drwxrwxr-x. 14 elk elk 271 Nov 15 22:09 kibana
drwxrwxr-x. 13 elk elk 4096 Nov 16 00:48 logstash
[root@elkserver elk]# chown -R elk:elk elasticsearch/


(3.3)安装kibana

注意:使用elk用户进行安装

STEP1:解压kibana安装包到/elk目录

[elk@elk6 ~]$ tar -xzvf kibana-6.5.4-linux-x86_64.tar.gz -C /elk/

STEP2:查看安装包

[elk@elk6 ~]$ cd /elk/
[elk@elk6 elk]$ ll
total 0
drwxr-xr-x. 9 elk elk 155 Oct 14 14:36 elasticsearch-6.5.4
drwxrwxr-x. 11 elk elk 212 Dec 18 2018 kibana-6.5.4-linux-x86_64

STEP3:启动kibana

[elk@elk6 elk]$ cd kibana-6.5.4-linux-x86_64/bin/
[elk@elk6 bin]$ ls
kibana kibana-keystore kibana-plugin
[elk@elk6 bin]$ ./kibana

STEP4:登录kibana

使用浏览器登录kibana:http://192.168.10.100:5601

ELK6环境搭建-LMLPHP

问题记录:

问题1:kibana启动后,无法使用外部的网页进行访问。在服务器上执行如下命令,也未返回任何信息

[elk@elk6 config]$ curl http://localhost:5601
[elk@elk6 config]$

解决方法:修改kibana的配置文件,不限制访问kibana的主机

[elk@elk6 config]$ pwd
/elk/kibana-6.5.4-linux-x86_64/config
[elk@elk6 config]$ vim kibana.yml
# 修改server.host为不限制访问
server.host: "0.0.0.0"


(3.4)安装logstash

注意:使用elk用户进行安装

logstash依赖于java,我们已经在前面安装过java了,这里可以忽略。如果是在单独的机器上安装logstash,那么需要先安装java。

STEP1:解压logstash安装包到/elk目录

[elk@elk6 ~]$ tar -xzvf logstash-6.5.4.tar.gz -C /elk/

STEP2:查看安装包

[elk@elk6 /]$ cd /elk
[elk@elk6 elk]$ ll
total 0
drwxr-xr-x. 9 elk elk 155 Oct 14 14:36 elasticsearch-6.5.4
drwxrwxr-x. 11 elk elk 212 Dec 18 2018 kibana-6.5.4-linux-x86_64
drwxrwxr-x. 12 elk elk 255 Oct 14 16:10 logstash-6.5.4

STEP3:启动logstash

[elk@elk6 bin]$ pwd
/elk/logstash-6.5.4/bin
启动方式为./logstash -f 配置文件


(3.5)安装filebeat

注意:使用root用户进行安装

STEP1:filebeat一般都是安装在需要进行文件采集的服务器上,这里用另一台服务器来安装filebeat

[root@filebeatserver ~]# tar -xzvf filebeat-6.5.4-linux-x86_64.tar.gz -C /elk/

STEP2:查看解压后的文件

[root@filebeatserver filebeat-6.5.4-linux-x86_64]# pwd
/elk/filebeat-6.5.4-linux-x86_64
[root@filebeatserver filebeat-6.5.4-linux-x86_64]# ll
total 35452
-rw-r--r--. 1 root root 100372 Dec 18 2018 fields.yml
-rwxr-xr-x. 1 root root 35930715 Dec 18 2018 filebeat
-rw-r--r--. 1 root root 68183 Dec 18 2018 filebeat.reference.yml
-rw-------. 1 root root 7610 Dec 18 2018 filebeat.yml
drwxr-xr-x. 4 root root 24 Dec 18 2018 kibana
-rw-r--r--. 1 root root 13675 Dec 18 2018 LICENSE.txt
drwxr-xr-x. 20 root root 271 Dec 18 2018 module
drwxr-xr-x. 2 root root 4096 Dec 18 2018 modules.d
-rw-r--r--. 1 root root 163067 Dec 18 2018 NOTICE.txt
-rw-r--r--. 1 root root 802 Dec 18 2018 README.md

STEP3:启动filebeat

[root@filebeatserver filebeat-6.5.4-linux-x86_64]# ./filebeat

到此ELK Stack的所有组件已经安装完毕,需要说明的是,ELK的安装相对简单,但是配置却十分复杂,本文并没有将如何配置beats、logstash等,后续会逐步展开,敬请期待。

【完】

05-28 10:50