ELK(Elasticsearch,Logstash,Kibana)的入门与安装配置及ELK集群的搭建
什么是ELK
E:Elasticsearch 是一个开源的分布式搜索引擎,它的特点是:分布式,零配置,自动发现,索引自动分布,索引副本机制,多数据源,自动搜索负载等。
L:Logstash 是一个开源工具,可以对你的日志进行收集,过滤,并将其存储供以后使用。
K:Kibana 是一个开源和免费的工具,为Logstash和Elasticsearch提供的日志 在web中可视化展现出来,可以帮助汇总,分析和搜索重要数据日志。
由这三个工具组成的是最简单的架构。Logstash 通过输入插件从多种数据源(比如日志文件、标准输入 Stdin 等)获取数据,再经过滤插件加工数据,然后经 Elasticsearch 输出插件输出到 Elasticsearch,通过 Kibana 展示。
ELK的安装配置
安装前的准备,下载如下安装包,要求版本一致(自行百度即可)
elasticsearch-6.2.2.tar.gz
elasticsearch-head-master.zip
kibana-6.2.2-linux-x86_64.tar.gz
logstash-6.2.2.tar.gz
node-v8.9.1-linux-x64.tar.gz
下面操作是在虚拟机上linux-64位系统上操作,如小伙伴还没有搭建好虚拟机的,可以去下方链接查看,同时还需要jdk也已经安装在虚拟机上,未安装的也可以去链接的教程中先安装好虚拟机和jdk
https://blog.csdn.net/yanglitian_123/article/details/106813097
liunx虚拟机安装,网关配置
把准备好的包,解压安装
1,创建一个software文件夹
[root@promote ~]# cd /
[root@promote /]# mkdir software
2,把文件拖入software文件夹内(左侧有可视化目录)
[root@promote /]# cd /software
[root@promote software]# ll
total 264420
-rw-r--r--. 1 root root 29049540 Jun 19 16:05 elasticsearch-6.2.2.tar.gz
-rw-r--r--. 1 root root 928667 Jun 19 16:05 elasticsearch-head-master.zip
-rw-r--r--. 1 root root 83415765 Jun 19 16:05 kibana-6.2.2-linux-x86_64.tar.gz
-rw-r--r--. 1 root root 139464029 Jun 19 16:05 logstash-6.2.2.tar.gz
-rw-r--r--. 1 root root 17896884 Jun 19 16:05 node-v8.9.1-linux-x64.tar.gz
3,解压到opt目录下
[root@promote software]# tar -zxf elasticsearch-6.2.2.tar.gz -C /opt
[root@promote software]# tar -zxf kibana-6.2.2-linux-x86_64.tar.gz -C /opt
[root@promote software]# tar -zxf logstash-6.2.2.tar.gz -C /opt
[root@promote software]# tar -zxf node-v8.9.1-linux-x64.tar.gz -C /opt
4,zip解压需要下载工具包
yum install -y unzip //下载解压缩工具
[root@promote software]# unzip elasticsearch-head-master.zip
5,重命名并移动到opt目录
[root@promote software]# mv elasticsearch-head-master /opt/eshm
6,因为文件名较长,为了方便可以将文件重命名
[root@promote opt]# mv elasticsearch-6.2.2/ es622
[root@promote opt]# mv kibana-6.2.2-linux-x86_64/ kibana622
[root@promote opt]# mv logstash-6.2.2/ logstash622
[root@promote opt]# mv node-v8.9.1-linux-x64/ node8
ElasticSearch的配置
1,修改主机名
[root@promote opt]# vi /etc/hostname
进入之后删除里面的内容(按a键进入操作模式,按esc键退出操作),改为bigdata01 保存退出 :x(这是保存退出的指令,后面就不解释了,如果是改错了,可以输入 :q! 强制退出,不保存修改)
(改成啥都可以,但要与后面的主机名相对应)
2,修改主机列表
[root@promote opt]# vi /etc/hosts
进入之后,从最后添加本机的地址,和本机的名字
后面两个暂时没有用,可以先添加好,为了后面搭建集群的时候备用
3,配置es的yml文件参数
[root@promote opt]# vi /opt/es622/config/elasticsearch.yml
在文件的最后插入以下内容,注意本机地址是否相同
cluster.name : test //集群名
node.name : test-master //节点名
node.master : true //是否为主节点
network.host : 192.168.56.110 //本机地址
discovery.zen.ping.unicast.hosts : ["192.168.56.110"] //本机地址
http.cors.enabled : true
http.cors.allow-origin : "*"
4,配置系统参数
[root@promote opt]# vi /etc/sysctl.conf
在文件底部插入以下内容
vm.max_map_count = 655360
保存退出之后用以下命令让他立即生效
[root@promote opt]# sysctl -w vm.max_map_count=655360
5,配置limits参数
[root@promote opt]# vi /etc/security/limits.conf
在倒数第二行插入以下内容
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
6,修改es622目录的属组,因为它不能用root启动
[root@promote opt]# useradd es //新建一个普通用户
[root@promote opt]# chown -R es:es es622 //修改组属
7,切换到普通用户并启动
[root@promote opt]# su es
在opt目录下输入以下内容
[es@promote opt]$ ./es622/bin/elasticsearch
底下出现started即为成功, 如果失败了,自己按照错误提示,回去看下自己配置文件的时候,空格,中英文符号有没有搞错
8,在浏览器中打开网址 http://192.168.56.110:9200/可以正常出页面,切有节点的信息,即是启动成功(用自己的主机名)
Head-master及node的配置
1,做这个之前按ctrl+c先把上个界面给关了,另开一个界面
2,配置系统变量
[root@promote ~]# vi /etc/profile
在靠近末尾的地方,加上
export NODE_HOME=/opt/node8
另开一个界面,输入echo $PATH
,把path路径复制粘贴到配置这边
在原来PATH后面加上:$NODE_HOME/bin
3,激活配置文件
[root@promote ~]# source /etc/profile
[root@promote ~]# node -v
v8.9.1
如果能出来版本号,就是配置成功了,不然就重新回去配置下path
4,其他配置
执行以下命令
[root@bigdata01 ~]# cd /opt/eshm
[root@bigdata01 eshm]# npm install -g grunt-cli //这一步对电脑性能要求较高,多等点时间
好了之后再执行以下命令 ,这一步同样耗时较久
[root@bigdata01 eshm]# npm install
如果等太久了,直接ctrl+c
结束,再执行npm install
命令即可
或执行npm install [email protected] --ignore-scripts
5,配置js文件
找到对应位置 ,
[root@bigdata01 eshm]# vi Gruntfile.js
插入以下代码,
hostname: '*',
[root@bigdata01 eshm]# vi _site/app.js
在4359行(输入行数回车直接跳到指定的行)找到下面的代码进行修改,把localhost
改成自己的主机地址
this.base_uri =this.config.base_uri ||this.prefs.get("app-base_uri") || "http://localhost:9200";
修改成为:
this.base_uri =this.config.base_uri ||this.prefs.get("app-base_uri") || "http://192.168.56.110:9200";
6,启动 head-master(保证es处于启动状态)
[root@bigdata01 eshm]# npm run start
出现下图即为启动成功
在web中测试http://192.168.56.110:9100/ 具体主机名看个人的
如果报错回去查看一下报错的原因,注意代码的位置等
Kibana安装,配置
1,再开一个窗口,配置yml文件
[root@bigdata01 ~]# cd /opt/kibana622
[root@bigdata01 kibana622]# vi config/kibana.yml
在文件末尾加入以下内容(自己的主机地址)
server.host: "192.168.56.110"
elasticsearch.url: "http://192.168.56.110:9200"
2,运行kibana
[root@bigdata01 kibana622]# ./bin/kibana
在web 界面输入**http://192.168.56.110:5601/**测试
Logstash安装使用
1,进入logstash 安装目录
[root@bigdata01 ~]# cd /opt/logstash622
2,输入以下代码,测试logstash是否正常运行,所需时间较久
[root@bigdata01 logstash622]# ./bin/logstash -e 'input{ stdin{} } output{ stdout{ codec => rubydebug } elasticsearch{ hosts => ["192.168.56.110:9200"] } }'
出现以下信息即为成功
The stdin plugin is now waiting for input:
[2020-06-19T22:51:24,912][INFO ][logstash.agent ] Pipelines running {:count=>1, :pipelines=>["main"]}
3,测试,在控制台输入时,web页面能接收到数据
这里不介绍其他实例 ,后续跟新后会将链接贴进来
ELK 集群的搭建
复制虚拟机
1,将之前配置的虚拟机关机
2,右击复制,选择专家模式,选择完全复制,备份当前虚拟机电脑状态,勾选重新初始化所有网卡的MAC地址
3,集群数量看自己的需要,这边为演示需要,建立两个复制体,为bigdata02,bigdata03
修改主机名和主机列表
1,分别在黑界面中修改网络IP地址
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
修改主机地址,这边改为192.168.56.111和112
修改之后需要重启网络 systemctl restart network
2,修改主机名
vi /etc/hostname
使立即生效
hostnamectl set-hostname bigdata02 //这边分别改为02和03
3,主机列表
vi /etc/hosts //如果之前已经提前添加这里就不用改,不然把新增的虚拟机名加进去
配置免密登录
1,分别打开moba,输入以下命令生成私钥
[root@bigdata01 ~]# ssh-keygen -t rsa -P ""
运行出现停顿之后直接再回车以下
然后每个都需要生成私钥
2,复制私钥到公钥(每个都需要)
[root@bigdata02 ~]# cat .ssh/id_rsa.pub >> .ssh/authorized_keys
3,远程复制到另一台虚拟机
需要连两次,分别连向02和03(每个都需要)
[root@bigdata01 ~]# ssh-copy-id -i .ssh/id_rsa.pub -p22 root@bigdata02
第一个停顿输入yes,第二个停顿输入密码
测试连接(循环测试)
[root@bigdata01 ~]# ssh root@bigdata02
Last login: Fri Jun 19 23:27:49 2020 from 192.168.56.1 //这样即为成功
[root@bigdata02 ~]#
测试后exit 退出,否则会有影响
配置集群
1,修改两个复制虚拟机的yml文件(两个都改,第一个也需要改一下用户组discovery.zen.ping.unicast.hosts)
[root@bigdata02 ~]# vi /opt/es622/config/elasticsearch.yml
在末尾修改
cluster.name : test
node.name : test-01 //这里改成节点名字
node.master : false //改成false
network.host : 192.168.56.111 //改成该主机地址
discovery.zen.ping.unicast.hosts : ["192.168.56.110","192.168.56.111","192.168.56.112"] //添加该主机地址
http.cors.enabled : true
http.cors.allow-origin : "*"
2,删除log 和data信息
rm -rf log
rm -rf data
3,切换到es 用户,开启三个虚拟机的es
[root@bigdata01 ~]# su es
[es@bigdata01 root]$ cd /opt
[es@bigdata01 opt]$ ./es622/bin/elasticsearch
4,再开一个窗口,打开主机的head
[root@bigdata01 ~]# cd /opt/eshm/
[root@bigdata01 eshm]# npm run start
5,打开http://192.168.56.110:9100/