(一)什么是ELK Stack

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

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

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

图1.Beats工具集合

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

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

图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

或者也可以从有道云笔记附件下载,链接: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

问题记录:

问题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等,后续会逐步展开,敬请期待。

【完】

ELK6环境搭建的更多相关文章

  1. ELK6.0环境搭建及配置

    ELK环境搭建及配置 ElasticSearch在5.x后的安装和插件的官方执行更好了,head插件官方默认集成在kibana的dev tools里,支持rpm包方式安装,x-pack安装后支持权限及 ...

  2. .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门

    2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高, ...

  3. Azure Service Fabric 开发环境搭建

    微服务体系结构是一种将服务器应用程序构建为一组小型服务的方法,每个服务都按自己的进程运行,并通过 HTTP 和 WebSocket 等协议相互通信.每个微服务都在特定的界定上下文(每服务)中实现特定的 ...

  4. rnandroid环境搭建

    react-native 环境搭建具体步骤这个大家已经玩烂了,这个主要是记录下来自己做win7系统遇到的坑 1.com.android.ddmlib.installexception 遇到这个问题,在 ...

  5. python开发环境搭建

    虽然网上有很多python开发环境搭建的文章,不过重复造轮子还是要的,记录一下过程,方便自己以后配置,也方便正在学习中的同事配置他们的环境. 1.准备好安装包 1)上python官网下载python运 ...

  6. springMVC初探--环境搭建和第一个HelloWorld简单项目

    注:此篇为学习springMVC时,做的笔记整理. MVC框架要做哪些事情? a,将url映射到java类,或者java类的方法上 b,封装用户提交的数据 c,处理请求->调用相关的业务处理—& ...

  7. 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~

    一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...

  8. Nexus(一)环境搭建

    昨天,成功搭建了自己的 Maven 环境(详见:Maven(一)环境搭建),今天就来研究和探讨下 Nexus 的搭建! 使用背景: 安装环境:Windows 10 -64位 JDK版本:1.7 Mav ...

  9. 「译」JUnit 5 系列:环境搭建

    原文地址:http://blog.codefx.org/libraries/junit-5-setup/ 原文日期:15, Feb, 2016 译文首发:Linesh 的博客:环境搭建 我的 Gith ...

随机推荐

  1. 熬夜23天吃透,九大核心专题,成功收割了阿里、百度、美团3家offer

    前言 今年受疫情影响非常大,春招和金三银四都要比往年来得更迟一些.春招结束之后,我特意把自己的面试经历顺了顺,总结出了不少的经验.对了,这次一共收割了3个大厂offer,分别是蚂蚁金服.美团和网易,特 ...

  2. Salesforce Javascript(一) Promise 浅谈

    本篇参看: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise https ...

  3. C语言实现数据结构的邻接矩阵----数组生成矩阵、打印、深度优先遍历和广度优先遍历

    写在前面 图的存储结构有两种:一种是基于二维数组的邻接矩阵表示法. 另一种是基于链表的的邻接表表示法. 在邻接矩阵中,可以如下表示顶点和边连接关系: 说明: 将顶点对应为下标,根据横纵坐标将矩阵中的某 ...

  4. RabbitMQ小记(二)

    1.RabbitMQ相关介绍 (1)RabbitMQ整体上是一个生产者和消费者模型,主要负责接收.存储.转发消息.RabbitMQ整体结构图如下: (2)生产者:发送消息的一方,生产者创建一条消息,发 ...

  5. c#RSA的SHA1加密与AES加密、解密

    前言:公司项目对接了一个对数据保密性要求较高的java公司.api接口逻辑是这样的:他们提供 SHA1私钥 与 AES的秘钥.我们需要将 传递查询参数 通过SHA1 私钥加密再转换成 十六进制 字符串 ...

  6. 模型集成model ensemble

    A prediction model that is composed of a set of models is called a model ensemble. Baggging 和Boostin ...

  7. CISCO交换机STP实验(生成树协议)

    目录 一.前言:生成树协议(STP) 二.CISCO交换机STP命令汇总 三.运用STP搭建简单拓扑 四.实战:STP综合实验 五.结语 一.前言:生成树协议(STP) 计算机网络中,我们为了减少网络 ...

  8. 基于COCA词频表的文本词汇分布测试工具v0.2

    update: 简单整理了一下代码的组织. 处理的单词封装成类,单词的修正,信息的显示都作为其内的方法. 写得还比较糙,工具本身可以封装,还有对于单词的变形基本没什么处理,以后有时间再改. 项目托管到 ...

  9. 持续集成工具之Jenkins安装部署

    一.DevOps理念 所谓DevOps是指development和Operations的组合,中文意思就是开发和运维的简写.devops理念主要是针对企业中的研发人员.运维人员和测试人员的工作理念,是 ...

  10. VMware安装的Linux系统忘记密码 怎么修改root密码

    因为昨天新安装过虚拟机设置了新的密码,再加上我好长时间没有用自己旧的虚拟机,导致忘记了密码,原来虽然知道在单用模式下,找回密码,但是确实是自己从来都没有做过,还好我们组大手飞翔哥告诉了我,怎么找回ro ...