38、ELK环境配置

1、ELK日志协议栈

1、ELK的基本介绍

ELK是三个软件产品的首字母缩写,ElasticsearchLogstashKibana。这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下,故被简称为 ELK 协议栈

  • Elasticsearch:是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
  • Logstash:是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。
  • Kibana :也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

ELK的实现介绍

  • ElasticSearch :Java, 实时的分布式搜索和分析引擎,他可以用于全文检索,结构化搜索以及分析,lucene。Solr
  • Logstash:JRuby, 具有实时渠道能力的数据收集引擎,包含输入、过滤、输出模块,一般在过滤模块中做日志格式化的解析工作
  • Kibana: JavaScript, 为ElasticSerach提供分析平台和可视化的Web平台。他可以ElasticSerach的索引中查找,呼唤数据,并生成各种维度的表图。
2、ELK日志协议栈整体架构

在这里插入图片描述

3、ELK的参考资料

ELK官网:https://www.elastic.co/
ELK官网文档:https://www.elastic.co/guide/index.html
ELK中文手册:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
ELK中文社区:https://elasticsearch.cn/

2、Elasticsearch功能学习

1、什么是ElasticSearch

Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

2、ElasticSearch使用案例
  • GitHub:2013年初抛弃了Solr,采取ElasticSearch 来做PB级的搜索,使用ElasticSearch搜索20TB的数据,包括13亿文件和1300亿行代码。
  • 维基百科:启动以elasticsearch为基础的核心搜索架构。
  • SoundCloud:“SoundCloud使用ElasticSearch为1.8亿用户提供即时而精准的音乐搜索服务。
  • 百度:百度目前广泛使用ElasticSearch作为文本数据分析,采集百度所有服务器上的各类指标数据及用户自定义数据,通过对各种数据进行多维分析展示,辅助定位分析实例异常或业务层面异常。目前覆盖百度内部20多个业务线(包括casio、云分析、网盟、预测、文库、直达号、钱包、风控等),单集群最大100台机器,200个ES节点,每天导入30TB+数据。
  • 新浪:使用ES 分析处理32亿条实时日志 •阿里使用ES 构建挖财自己的日志采集和分析体系
3、Elasticsearch的安装部署
第一步:创建普通用户

注意:ES不能使用root用户来启动,必须使用普通用户来安装启动。这里我们使用hadoop用户来安装我们的es服务

第二步:下载并上传压缩包,然后解压

将es的安装包下载并上传到node01服务器的/kkb/soft
node01服务器使用es用户执行以下命令:

[hadoop@node01 ~]$ cd /kkb/soft/
[hadoop@node01 soft]$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.7.0.tar.gz

[hadoop@node01 soft]$ tar -zxf elasticsearch-6.7.0.tar.gz  -C /kkb/install/
第三步:修改配置文件

修改elasticsearch.yml
node01服务器使用hadoop用户来修改配置文件

cd /kkb/install/elasticsearch-6.7.0/config/
mkdir -p /kkb/install/elasticsearch-6.7.0/logs/
mkdir -p /kkb/install/elasticsearch-6.7.0/datas
vim elasticsearch.yml
cluster.name: myes
node.name: node01
path.data: /kkb/install/elasticsearch-6.7.0/datas
path.logs: /kkb/install/elasticsearch-6.7.0/logs
network.host: 192.168.52.100
http.port: 9200
discovery.zen.ping.unicast.hosts: ["node01", "node02", "node03"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
http.cors.enabled: true
http.cors.allow-origin: "*"

修改jvm.option
修改jvm.option配置文件,调整jvm堆内存大小
node01使用es用户执行以下命令调整jvm堆内存大小,每个人根据自己服务器的内存大小来进行调整

cd /kkb/install/elasticsearch-6.7.0/config
vim jvm.options

-Xms2g
-Xmx2g
第四步:将安装包分发到其他服务器上面

node01使用es用户将安装包分发到其他服务器上面去

cd /kkb/install/
scp -r elasticsearch-6.7.0/ node02:$PWD
scp -r elasticsearch-6.7.0/ node03:$PWD
第五步:node02与node03修改es配置文件

node02与node03也需要修改es配置文件
node02使用hadoop用户执行以下命令修改es配置文件

cd /kkb/install/elasticsearch-6.7.0/config/
vim elasticsearch.yml
cluster.name: myes
node.name: node02
path.data: /kkb/install/elasticsearch-6.7.0/datas
path.logs: /kkb/install/elasticsearch-6.7.0/logs
network.host: 192.168.52.110
http.port: 9200
discovery.zen.ping.unicast.hosts: ["node01", "node02", "node03"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
http.cors.enabled: true
http.cors.allow-origin: "*"

node03使用hadoop

cd /kkb/install/elasticsearch-6.7.0/config/ 
vim elasticsearch.yml

cluster.name: myes
node.name: node03
path.data: /kkb/install/elasticsearch-6.7.0/datas
path.logs: /kkb/install/elasticsearch-6.7.0/logs
network.host: 192.168.52.120
http.port: 9200
discovery.zen.ping.unicast.hosts: ["node01", "node02", "node03"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
http.cors.enabled: true
http.cors.allow-origin: "*"
第六步:修改系统配置,解决启动时候的问题

由于现在使用普通用户来安装es服务,且es服务对服务器的资源要求比较多,包括内存大小,线程数等。所以我们需要给普通用户解开资源的束缚.

解决启动问题一:普通用户打开文件的最大数限制
问题错误信息描述:
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

ES因为需要大量的创建索引文件,需要大量的打开系统的文件,所以我们需要解除linux系统当中打开文件最大数目的限制,不然ES启动就会抛错

三台机器使用es用户执行以下命令解除打开文件数据的限制

sudo vi /etc/security/limits.conf

* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

解决启动问题二:普通用户启动线程数限制
三台机器执行以下命令打开文件最大数

sudo vi /etc/sysctl.conf

vm.max_map_count=655360
fs.file-max=655360
执行以下命令生效
sudo sysctl -p

注意:以上两个问题修改完成之后,一定要重新连接linux生效。关闭secureCRT或者XShell工具,然后重新打开工具连接linux即可。

重新连接之后执行以下命令,出现这个结果即可准备启动ES了

[hadoop@node01 ~]$ ulimit -Hn
131072
[hadoop@node01 ~]$ ulimit -Sn
65536
[hadoop@node01 ~]$ ulimit -Hu
4096
[hadoop@node01 ~]$ ulimit -Su
4096
第七步:启动ES服务

三台机器使用hadoop用户执行以下命令启动es服务

nohup /kkb/install/elasticsearch-6.7.0/bin/elasticsearch 2>&1 &

启动成功之后jsp即可看到es的服务进程,并且访问页面
http://node01:9200/?pretty
能够看到es启动之后的一些信息

注意:如果哪一台机器服务启动失败,那么就到哪一台机器的 /kkb/install/elasticsearch-6.7.0/logs
这个路径下面去查看错误日志

4、安装elasticsearch-head插件

由于es服务启动之后,访问界面比较丑陋,为了更好的查看索引库当中的信息,我们可以通过安装elasticsearch-head这个插件来实现,这个插件可以更方便快捷的看到es的管理界面

1 、node01机器安装nodejs
  • Node.js是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
  • Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月,由RyanDahl开发,实质是对Chrome V8引擎进行了封装。
  • Node.js 不是一个 JavaScript 框架,不同于CakePHP、Django、Rails。Node.js 更不是浏览器端的库,不能与 jQuery、ExtJS相提并论。
  • Node.js 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。

安装步骤参考:https://www.cnblogs.com/kevingrace/p/8990169.html

第一步:下载安装包
node01机器执行以下命令下载安装包,然后进行解压

cd /kkb/soft/
wget https://npm.taobao.org/mirrors/node/v8.1.0/node-v8.1.0-linux-x64.tar.gz
tar -zxf node-v8.1.0-linux-x64.tar.gz  -C /kkb/install/

第二步:创建软连接
node01执行以下命令创建软连接

sudo ln -s /kkb/install/node-v8.1.0-linux-x64/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm
sudo ln -s /kkb/install/node-v8.1.0-linux-x64/bin/node /usr/local/bin/node

第三步:修改环境变量
node01服务器添加环境变量

sudo vim /etc/profile
export NODE_HOME=/kkb/install/node-v8.1.0-linux-x64
export PATH=:$PATH:$NODE_HOME/bin

修改完环境变量使用source生效

source /etc/profile

第四步:验证安装成功
node01执行以下命令验证安装生效

node -v
npm -v
2 、node01机器安装elasticsearch-head插件

elasticsearch-head这个插件是es提供的一个用于图形化界面查看的一个插件工具,可以安装上这个插件之后,通过这个插件来实现我们通过浏览器查看es当中的数据。

安装elasticsearch-head这个插件这里提供两种方式进行安装,

  • 第一种方式就是自己下载源码包进行编译,耗时比较长,网络较差的情况下,基本上不可能安装成功。
  • 第二种方式就是直接使用我已经编译好的安装包,进行修改配置即可。

1、第一种方式:在线安装elasticsearch-head插件(网速慢,不推荐)
这里选择node01进行安装
第一步:在线安装必须依赖包

# 初始化目录
cd /kkb/install
# 安装GCC
sudo yum install -y gcc-c++ make git
第二步:从git上面克隆编译包并进行安装
cd /kkb/install
git clone https://github.com/mobz/elasticsearch-head.git
# 进入安装目录
cd /kkb/install/elasticsearch-head
# intall 才会有 node-modules
npm install

以下进度信息
npm WARN notice [SECURITY] lodash has the following vulnerability: 1 low. Go here for more details:

npm WARN notice [SECURITY] debug has the following vulnerability: 1 low. Go here for more details: https://nodesecurity.io/advisories?search=debug&version=0.7.4 - Run `npm i npm@latest -g` to upgrade your npm version, and then `npm audit` to get more info.
npm ERR! Unexpected end of input at 1:2096
npm ERR! 7c1a1bc21c976bb49f3ea","tarball":"https://registry.npmjs.org/safer-bu
npm ERR!                                                                      ^
npm ERR! A complete log of this run can be found in:
npm ERR!     /kkb/soft/.npm/_logs/2018-11-27T14_35_39_453Z-debug.log

以上错误可以不用管。

第三步、node01机器修改Gruntfile.js
第一台机器修改Gruntfile.js这个文件

cd /kkb/install/elasticsearch-head
vim Gruntfile.js
找到以下代码:
添加一行: hostname: '192.168.52.100',
connect: {
                        server: {
                              options: {
                                     hostname: '192.168.52.100',
                                     port: 9100,
                                     base: '.',
                                     keepalive: travelue
                                }
                        }
                }

第四步、node01机器修改app.js

第一台机器修改app.js

cd /kkb/install/elasticsearch-head/_site
vim app.js 

更改前:http://localhost:9200
更改后:http://node01:9200
2、第二种方式:直接使用提供的编译之后的源码包解压之后修改配置文件即可(强烈推荐)

第一步:上传压缩包到/kkb/soft路径下去
将我们的压缩包 elasticsearch-head-compile-after.tar.gz 上传到node01机器的/kkb/soft路径下面去

第二步:解压安装包
node01执行以下命令解压安装包

cd /kkb/soft/
tar -zxvf elasticsearch-head-compile-after.tar.gz -C /kkb/install/

第三步、node01机器修改Gruntfile.js
修改Gruntfile.js这个文件

cd /kkb/install/elasticsearch-head
vim Gruntfile.js
找到以下代码:
添加一行: hostname: '192.168.52.100',
connect: {
                        server: {
                              options: {
                                     hostname: '192.168.52.100',
                                     port: 9100,
                                     base: '.',
                                     keepalive: true
                                }
                        }
                }

第四步、node01机器修改app.js
第一台机器修改app.js

cd /kkb/install/elasticsearch-head/_site
vim app.js 

更改前:http://localhost:9200
更改后:http://node01:9200
3、node01机器启动head服务

node01启动elasticsearch-head插件

cd /kkb/install/elasticsearch-head/node_modules/grunt/bin/

进程后台启动命令

nohup ./grunt server >/dev/null 2>&1 &

如何停止:elasticsearch-head进程
执行以下命令找到elasticsearch-head的插件进程,然后使用kill -9 杀死进程即可

sudo yum install net-tools     
netstat -nltp | grep 9100
kill -9 8328
4、访问elasticsearch-head界面

打开Google Chrome访问

http://192.168.52.100:9100/
5、node01服务器安装Kibana

kibana的基本介绍:

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

接着使用我们的hadoop用户在node01服务器上面来实现我们的kibana的安装部署

第一步:下载资源上传服务器并解压

node01服务器使用hadoop用户执行以下命令来下载安装包并解压
cd /kkb/soft
在线下载
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.7.0-linux-x86_64.tar.gz
tar -zxf kibana-6.7.0-linux-x86_64.tar.gz -C /kkb/install/

第二步:修改配置文件

node01服务器使用es用户执行以下命令来修改配置文件

cd /kkb/install/kibana-6.7.0-linux-x86_64/config/
vi kibana.yml
配置内容如下:
server.host: "node01"
elasticsearch.hosts: ["http://node01:9200"]
第三步:启动服务

node01服务器使用es用户执行以下命令启动kibana服务

cd /kkb/install/kibana-6.7.0-linux-x86_64
nohup bin/kibana >/dev/null 2>&1 &

如何停止kibana进程:停止kibana服务进程
查看进程号

ps -ef | grep node

然后使用kill -9杀死进程即可

第四步:浏览器访问

浏览器地址访问kibana服务
http://node01:5601

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值