Linux环境下Elasticsearch相关软件安装
本文将介绍在linux(Centos7)环境下安装Elasticsearch相关的软件。
1、安装Elasticsearch
1.1 Elasticsearch下载
首先去Elasticsearch官网下载相应版本的安装包,下载之后传输到linux服务器上。
官网地址:https://www.elastic.co/cn/downloads/past-releases
我这里下载的是elasticsearch-7.12.1-linux-x86_64.tar.gz
国内加速下载地址:https://www.newbe.pro/tags/Mirrors/
将下载好的tar包传到服务器上指定位置,解压。
解压后出现elasticsearch文件夹,一般来讲直接启动就行了,但就是有时候会有问题。
启动命令,直接使用bin下的命令:
./bin/elasticsearch
或者是
./bin/elasticsearch -d
-d
代表的是后台运行
原因是Elasticsearch不能使用root启动,需要新建其它用户进行启动。
# 创建一个叫zsx242030的用户
useradd zsx242030
# 给zsx242030用户设置一个密码,输入两次密码
passwd *************
# 切换zsx242030用户
su zsx242030
切换用户登录重新启动:
发现存在上面问题,是因为elasticsearch用户没有该文件夹的权限,需要对新用户赋予对目录的操作权限:
# 切换到root用户
su root
# zsx243040是当前登陆用户
chown -R zsx242030:zsx242030 /home/zhangshixing/elasticsearch/elasticsearch-7.12.1
# 或者
chown -R zsx242030 /home/zhangshixing/elasticsearch/elasticsearch-7.12.1
然后再尝试启动,发现没有报错:
# 查看进程
ps -ef|grep elasticsearch
我们测试一下:
curl localhost:9200
此时我们在浏览器试一下,把 localhost: 改成服务器 ip:
访问不了,因为 elasticsearch 默认只有 localhost 能访问,怎么办呢,修改配置文件:
vim config/elasticsearch.yml
1、打开network.host的注释, 改成 0.0.0.0
2、打开 node.name的注释
3、打开cluster .initial_master_nodes的注释,设置为node-1
4、最下边加两行,允许跨域。
http.cors.enabled: true http.cors.allow-origin: "*"
重启服务,先kill, 在重启。如果没有问题,会看到下面的界面:
如果再次重启的时候有问题,请参考下面遇到的问题,很大概率上是下面的问题。
如果能够正常重启,但是还是无法通过浏览器访问,先进行下面的操作。
那么是防火墙的问题,开放9200端口:
# 查看开放的端口号
firewall-cmd --list-all
# 设置开放的端口号
firewall-cmd --add-port=9200/tcp --permanent
# 重启防火墙
firewall-cmd --reload
1.2 安装Elasticsearch遇到的问题
期间还可能遇到的问题:
需要修改一些系统参数, 先切换回root
用户
错误1: max file descriptors [4096] for elasticsearch process is too low, increase to least [65535]
解决: vim /etc/security/limits.conf
最下面加两行
* soft nofile 65536
* hard nofile 65536
nofile是单个进程允许打开的最大文件个数,soft nofile是软限制,hard nofile是硬限制。
退出回话,重新连接,执行ulimit -Hn
验证。
错误2:max number of threads [1024] for user [es] is too low, increase to at least [4096]
解决: vim /etc/security/limits.d/20-nproc.conf
错误3: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least
解决: vim /etc/sysctl.conf
,增加配置vm.max_map_count=262144
执行下面命令,修改内核参数马上生效sysctl -p
如果不生效,重新启动虚拟机reboot
1.3 安装Elasticsearch-head插件
head插件主要是一个可以用于监控和操作es的一个图形化界面,安装这个插件,需要先安装node.js 从官网下载
最新的稳定版安装包,上传到服务器。
1.3.1 安装node
解压:tar -xvf node-v16.13.1-linux-x64.tar.gz
然后配置两个软链,也可以配置环境变量:
ln -s /home/zhangshixing/nodejs/node-v16.13.1-linux-x64/bin/npm /usr/local/bin/npm
ln -s /home/zhangshixing/nodejs/node-v16.13.1-linux-x64/bin/node /usr/local/bin/node
主要目的就是可是识别node,npm命令,执行完毕之后验证一下:
node -v
npm -v
看版本信息是否出现:
如果nodejs安装过程中出现缺包,yum安装一下。
1.3.2 安装head
下载head插件: 地址 https://github.com/mobz/elasticsearch-head
可以下载zip包传到服务器上解压, 如果机器上有git , 也可以使用git clone 复制下来。
# 解压
unzip elasticsearch-head-master.zip
下载下来解压之后,cd 进入head 目录
npm install -g grunt --registry=https://registry.npm.taobao.org
#检测是否安装成功,如果执行命令后出现版本号就表明成功
./grunt -version
然后使用npm install
进行编译。
然后要改一个配置,把localhost改为ip地址,否则head监控的是localhost的地址,如果head和es不在一台机器上
会有问题。
修改Gruntfile.js
文件,修改为ES服务器IP:
connect: {
server: {
options: {
hostname:'192.168.2.186',
port: 9100,
base: '.',
keepalive: true
}
}
}
最后使用 npm run start
执行,也可以使用 grunt server
启动。
需要关闭防火墙,开放9100端口。
# 查看开放的端口号
firewall-cmd --list-all
# 设置开放的端口号
firewall-cmd --add-port=9100/tcp --permanent
# 重启防火墙
firewall-cmd --reload
连接 http://192.168.2.186:9200/
1.4 Elasticsearch分词器Elasticsearch-Analysis-ik安装
这个比较简单,下载之后,解压到es安装目录下的plugin目录中即可,注意下载相应的版本。
ik地址:https://github.com/medcl/elasticsearch-analysis-ik
新建一个ik目录,mkdir ik
解压:unzip -d ik/ elasticsearch-analysis-ik-7.12.1.zip
将ik拷贝到elasticsearch的plugins目录下:
然后重启es,进行分词测试。
2、安装ElasticHD
打开Xshell,连接到Linux系统中;
第一步:我们来下载程序压缩包
wget https://github.com/360EntSecGroup-Skylar/ElasticHD/releases/download/1.4/elasticHD_linux_amd64.zip
也可以提前下载好上传到服务器上elasticHD_linux_amd64.zip
。
第二步:解压
unzip elasticHD_linux_amd64.zip
提示
Archive: elasticHD_linux_amd64.zip
inflating: ElasticHD
说明解压成功;
第三步:授权
chmod 0777 ElasticHD
第四步:启动
./ElasticHD -p 192.168.2.186:9800
说明启动成功了,需要关闭防火墙,开放9800端口。
# 查看开放的端口号
firewall-cmd --list-all
# 设置开放的端口号
firewall-cmd --add-port=9800/tcp --permanent
# 重启防火墙
firewall-cmd --reload
我们用浏览器测试下:
3、安装Kibana
1、下载kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.12.1-linux-x86_64.tar.gz
也可以提前下载好,传输到linux服务器上。
2、解压
tar -zxvf kibana-7.12.1-linux-x86_64.tar.gz
3、修改配置文件
vim config/kibana.yml
# 放开注释,将默认配置改成如下
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: "http://192.168.2.186:9200"
kibana.index: ".kibana"
4、启动
./bin/kibana
切换到新建的普通用户
# 使用root用户赋予权限
chown -R zsx242030:zsx242030 /home/zhangshixing/elasticsearch/kibana-7.12.1-linux-x86_64
然后重新启动:
5、访问
需要关闭防火墙,开放5601端口。
# 查看开放的端口号
firewall-cmd --list-all
# 设置开放的端口号
firewall-cmd --add-port=5601/tcp --permanent
# 重启防火墙
firewall-cmd --reload
http://192.168.87.120:5601
可以在config/kibana.yml
配置文件中配置:
i18n.locale: "zh-CN"
让界面中文展示:
4、安装Logstash
1、下载Logstash
本人是从本地上传到服务器上的,使用的7.12.1。
logstash-7.12.1-linux-x86_64.tar.gz
2、解压Logstash
进入上传目录解压Logstash
tar -zxvf logstash-7.12.1-linux-x86_64.tar.gz
3、启动
./bin/logstash -e 'input { stdin { } } output { stdout {} }'
具体的使用案例请参考《Windows环境下Elasticsearch相关软件安装》。
5、安装Filebeat
1、下载安装包
https://www.elastic.co/cn/downloads/beats/filebeat
根据自己的需要,点击View past releases →
下载相应的版本,这里我下载的是这个版本filebeat-7-12-1
2、上传服务器解压
$ tar -xvf filebeat-7.12.1-linux-x86_64.tar.gz
3、修改配置文件
编辑filebeat.yml
配置文件:
a:配置 filebeat:inputs:path
,这里的路径是所要收集日志的路径
b:配置 enabled: true
这个配置很重要,只有配置为true之后配置才可生效,否则不起作用。
c:配置Outputs ,这里的Outputs有elasticsearch,logstash。按照配置文件下面的示例配置即可,只能配置一
个输出,默认是ElasticSearch。
4、启动
./filebeat -e -c filebeat.yml
正常情况下,应该有个链接ES的过程,将数据输出到es。
5、测试
用以下命令向beat.log
文件写入内容,以下内容是全量覆盖,不是追加往里面写内容,若想改成追加内容,把下
面的>
符号改成 >>
即可。
echo "2020-10-31 08:55:09,578 [8] INFO test.Logging - 2017-06-11 08:55:09--System.ArgumentOutOfRangeException" > /home/zhangshixing/elasticsearch/filebeat-7.12.1-linux-x86_64/logs/beat.log
后台打印信息:
用kinaba
查看,多了一个索引:
默认情况下,Filebeat写事件到名为filebeat-7.12.1-yyyy.MM.dd
的索引,其中yyyy.MM.dd
是事件被索引的日
期。为了用一个不同的名字,你可以在Elasticsearch输出中设置index选项。
到目前为止,和Elasticsearch相关的一些常用的软件都介绍完毕。