Linux安装搭建ELK集群
一、ES简介
ES是一个基于RESTful web接口并且构建在Apache Lucene之上的开源分布式搜索引擎。
特点是:高可用,高扩展,是一种NOSQL的数据存储工具
二、ES安装前的准备(elk安装包版本要求一致)
①:创建虚拟机:elk001
设置IP地址为:192.168.56.111
②:下载安装包:
- 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
- jdk-8u221-linux-x64.tar.gz
安装包链接:https://pan.baidu.com/s/1ppxqunJrYUO2tTwUiLFKNA
提取码:x1rh
三、安装ELK
-
根目录下创建software文件夹,mkdir /software 把下载好的安装包,拖拽到/software目录中
拖拽之后的安装包:
输入 ll 查看目录下所有文件:
-
输入:yum install -y unzip 下载解压缩工具
-
输入:tar -zxvf elasticsearch-6.2.2.tar.gz -C /opt 将文件解压安装至opt目录下
-
输入:tar -zxvf jdk-8u221-linux-x64.tar.gz -C /opt 将文件解压安装至opt目录下
-
输入:tar -zxvf kibana-6.2.2-linux-x86_64.tar.gz -C/opt 将文件解压安装至opt目录下
-
输入:tar -zxvf logstash-6.2.2.tar.gz -C /opt 将文件解压安装至opt目录下
-
输入:tar -zxvf node-v8.9.1-linux-x64.tar.gz -C/opt 将文件解压安装至opt目录下
-
输入:unzip elasticsearch-head-master.zip 解压至当前文件夹
-
输入 mv elasticsearch-head-master /opt/eshm 把解压的文件夹移动并改名为eshm
-
输入:cd /opt ,输入ll查看文件是否全部解压成功
-
输入: mv elasticsearch-6.2.2/ es622 文件夹重命名为es622
-
输入:mv jdk1.8.0_221/ java8 文件夹重命名为java8
-
输入:mv kibana-6.2.2-linux-x86_64/ kibana622 文件夹重命名为kibana622
-
输入:mv logstash-6.2.2/ logstash622 文件夹重命名为logstash622
-
输入:mv node-v8.9.1-linux-x64/ node891 文件夹重命名为node891
-
文件夹重命名完成,输入ll查看:
四、ES的配置
- 输入:vi /etc/hostname 修改主机名,删除localhost.localdomain
设置主机名为:bigdata01,退出保存
- 输入:vi /etc/hosts 修改主机列表此处bigdata02、bigdata03是下文创建集群的子节点)
- 配置es的参数 (虚拟机IP地址为:192.168.56.111)
输入:
vi /opt/es622/config/elasticsearch.yml
按 shift+g,快速定位到尾行,按o在下一行插入以下代码:
①:cluster.name : test ---->集群名
②:node.name : test-master ---->节点名
③:node.master : true ---->是否是主节点
④:network.host : 192.168.56.111 ---->本机地址
⑤:discovery.zen.ping.unicast.hosts : [“192.168.56.111”] ---->本机地址 ([“…”]不要复制粘贴,"“可能会粘贴为中文状态下双引号”")
⑥:http.cors.enabled : true
⑦:http.cors.allow-origin : “*” (“*”不要复制粘贴,可能会粘贴为中文状态下双引号"")
4. 配置系统参数
(1)输入:vi /etc/sysctl.conf 修改Linux系统一个进程能拥有的最大虚拟内存区域 (可以设为262144)
插入内容:vm.max_map_count=655360
使用命令刷新: sysctl -w vm.max_map_count=655360
会输出:vm.max_map_count = 655360
(2)输入:vi /etc/security/limits.conf
末行插入内容:(此处* soft…中间是有空格的),解除Linux系统最大文件打开数限制,设置当前系统针对所有用户最大文件打开数数为65536
①:* soft nofile 65536
②:* hard nofile 65536
③:* soft nproc 4096
④:* hard nproc 4096
5. 配置jdk环境
①:vi /etc/profile 配置系统环境
②:在第53行插入:
export JAVA_HOME=/opt/java8
export JRE_HOME=/opt/java8/jre
export CLASSPATH=.:$JAVA_HOME/lib/rt.jar:$jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
③:source /etc/profile 重新加载配置
④:输入:java -version、javac 测试java是否安装配置成功
安装成功显示如下:
- 新增一个用户es,useradd es, 修改es622目录的属组(将es622目录赋权给es,因为elasticsearch需要普通用户才能启动, 不能使用root启动)
chown -R es:es es622
- 输入:su es 切换到普通用户es
- 在/opt目录下输入:./es622/bin/elasticsearch
底部出现 started 表示启动成功
- 在windows界面打开网页,输入http://192.168.56.111:9200/,可以正常出页面,切有节点的信息,即是启动成功
五、Head-master及node的配置
1.输入:vi /etc/profile 配置系统环境 按shift+g定位到底部,然后按o在下一行插入以下内容:
export NODE_HOME=/opt/node891
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
export PATH=$PATH:$NODE_HOME/bin
(如之前在java配置过PATH变量则在原先的尾部增加: :$NODE_HOME/bin)
(echo $PATH 可以查看系统标准路径)
2.输入:source /etc/profile 激活配置文件,输入node -v 可以查看是否配置成功
3.输入:cd /opt/eshm
4.输入:npm install -g grunt-cli --加载时间较长,需耐心等待
加载完成:
5.输入:npm install --下载时间尤其长
或者下载慢或者出错可以下载其他版本:npm install [email protected] --ignore-scripts
6.输入:vi Gruntfile.js,shift+g定位到末行,在图示位置增加一行代码:hostname: ‘*’,
7.输入:vi _site/app.js,输入4360,定位到该行,找到如下代码,并进行修改:
localhost修改为本机ip地址:
8.输入:npm run start 启动head-master
前提是 (上文四.8)elasticsearch为开启状态,另开一个窗口切换用户到es, 输入 ./es622/bin/elasticsearch打开elasticsearch
输入:npm run start ,显示以下界面表示启动成功(如果报错提示grunt命令找不到,则输入:npm install)
9.在windows界面,打开网页,输入:http://192.168.56.111:9100/
打开显示为:
六、使用Head-master对ES进行测试
1.点击索引页签,点击新建索引
2.点击总览页签,即可查看索引的情况
七、kibana安装,配置和实例
1.输入:cd /opt/kibana622
2.输入:vi config/kibana.yml 按shift+g跳转到行末,按o增加以下内容:
server.host: "192.168.56.111"
elasticsearch.url: "http://192.168.56.111:9200"
3.输入:./bin/kibana 运行kibana
加载成功显示:
4.在windows界面打开网页,输入http://192.168.56.111:5601/
显示界面如图:
八、测试logstash实例
logstash是一个收集器 ,需要为它指定Input和Output(Input和Output可以为多个)。
由于我们需要把Java代码中Log4j的日志输出到ElasticSearch中,因此这里的Input就是Log4j,而Output就是ElasticSearch。
1.新建窗口,输入:cd /opt/logstash622 进入logstash的安装目录
2.测试logstash是否能正常工作:
①:普通输入输出:
./bin/logstash -e 'input { stdin{} } output { stdout{} }'
输入代码加载成功后,测试输入 123,输出123
②:把控制台输入的数据转换成json格式的数据:
./bin/logstash -e 'input { stdin{} } output { stdout{ codec => json } }'
输出代码加载成功后,测试输入 ABC,控制台输出json格式的数据:
③:把控制台输入的数据转换成rubydebug格式的数据:
./bin/logstash -e 'input { stdin{} } output { stdout{ codec => rubydebug } }'
输入代码加载成功后,测试输入 ABC、娃哈哈,控制台输出rubydebug格式的数据:
④:把控制台输入的数据转换成rubydebug类型的数据,同时上传到es服务器,可以在对应192.168.56.103:9100的页面进行查看
./bin/logstash -e 'input { stdin{} } output { stdout{ codec => rubydebug } elasticsearch{ hosts => ["192.168.56.103:9200" ] } }'
输入代码加载成功后,测试输入 ABC,控制台输出rubydebug格式的数据:
3.使用logstash读取文件
①:在logstash622文件夹下创建测试文件夹tmp:mkdir tmp
②:在tmp文件夹下创建文本:touch test.txt
③:在文本中随意编辑测试内容:vi test.txt
④:tmp目录下创建一个logstash的测试文档:vi demo.conf
输入一下代码:
input{
file{
path => "/opt/logstash622/tmp/test.txt"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
output{
stdout{
codec => rubydebug
}
elasticsearch{
hosts => ["192.168.56.111:9200"]
}
}
⑤:在logstash622目录下执行以下代码
./bin/logstash -f tmp/demo.conf
执行成功会读取输出test.txt文件中内容:
下文集群配好后可以在网页上读取到文件信息
显示文件信息:
九、搭建ELK集群
- 复制虚拟机
①:以elk001为对象,复制两台虚拟机elk002、elk003模拟集群:
②:复制完成分别启动虚拟机elk001,elk002,elk003,输入用户名密码登录(用户名都为:root,密码:ok)
③:虚拟机elk002、elk003需分别重新配置网关,IP地址与(四.2中)设置一致 (设置完成后在用Moba连接,不然IP地址冲突,连接不上)
设置IP地址:vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
输入:systemctl restart network重启网络 - 修改主机名和主机列表
①:设置 elk002 主机名为 bigdata02:hostnamectl set-hostname bigdata02
vi /etc/hostname 内容修改为 bigdata02
②: 设置 elk003 主机名为 bigdata03:hostnamectl set-hostname bigdata03
vi /etc/hostname 内容修改为 bigdata03
3.主机列表输入: vi /etc/hosts 确认每个虚拟机主机列表都包含每个节点:
- 配置免密登录
①:输入:ssh-keygen -t rsa -P “” enter键需点击两次,生成私钥
②:cat .ssh/id_rsa.pub >> .ssh/authorized_keys 复制私钥到公钥,虚拟机elk001、elk002、elk003分别都执行一次
③:对于虚拟机elk001,输入:
ssh-copy-id -i .ssh/id_rsa.pub -p22 root@bigdata02
ssh-copy-id -i .ssh/id_rsa.pub -p22 root@bigdata03
添加另外两台虚拟机elk002、elk003连接,对于虚拟机elk002、elk003需分别进行上述操作
④测试:
ssh -p 22 root@bigdata01
ssh -p 22 root@bigdata02
ssh -p 22 root@bigdata03
远程登录验证,三台虚拟机相互切换,不需要输入密码即可
如果相互切换的时候提示要连续enter几次,在输入切换用户的密码,说明免密配置没有配置好,需要重新进行上述①②③步骤
4.配置elasticsearch集群
①:输入:vi /opt/es622/config/elasticsearch.yml ( 修改节点名,ip地址,主机列表)
主节点elk001:
子节点elk002:
子节点elk003:
②:三个虚拟机都切换用户至es:
su es
③:虚拟机elk002、elk003需分别删除es622目录下的data和logs目录, (因为elk002,elk003是复制elk001的,并且./es622/bin/elasticsearch启动过,会冲突)
5. 启动
①:elk001、elk002、elk003分别在/opt目录下输入:./es622/bin/elasticsearch
底部出现 started表示启动成功
②:主节点elk001新建窗口,切到eshm目录下输入:npm run start (启动head-master)
③:输入网址:http://192.168.56.111:9100/
显示以下页面表示集群创建连接成功